は、ArrayListのか、LinkedListの中で次の点を考慮 [グロスターシャー州、ニューハンプシャー州、ヨークシャー、ランカシャー] シャイアは、長さ5 の最長共通接尾辞である出力は5 する必要がありますどのように私は上記を達成するための方法を書くことができますし、返却の長さ文字列のリストから最も長い共通サフィックスを見つけて、その結果のサフィックスの長さをjavaで返しますか?
答えて
これを試してください。
説明は私がここでやっている何のコメント
package javaapplication1;
public class SegmentTree {
public static void main(String[] args) {
String[] array = {"Gloucestershire", "Hampshire", "Yorkshire", "Lancashire"};
int i,j;
int min=10000000;
//reversing the strings and finding the length of smallest string
for(i=0;i<(array.length);i++)
{
if(array[i].length()<min)
min=array[i].length();
StringBuilder input1 = new StringBuilder();
input1.append(array[i]);
array[i] = input1.reverse().toString();
}
//finding the length of longest suffix
for(i=0;i<min;i++)
{
for(j=1;j<(array.length);j++)
{
if(array[j].charAt(i)!=array[j-1].charAt(i))
{
break;
}
}
if(j!=array.length)
break;
}
System.out.println(i);
}
}
であるまず第二最後というように、すべての文字列の最後のelemをチェックし、あります。
時間計算:O(n個×m個)、
N =文字列、数m =最小の文字列の長さ
ありがとうございます。上記のコードはうまくいきます。 –
@shriharis私の喜び –
グアバは、あなたのアルゴリズムで使用することができStrings.commonSuffix(CharSequence a, CharSequence b)
と呼ばれるヘルパー関数を持っています。私はGuavaのような依存関係を追加することは、この機能が過度に働くことを知っていることを知っています - この場合、ソースコードを参照してhow this function is implementedを見て、この実装をあなたのプログラムに移すことができます。あなたのプログラムは次のようになります:
import com.google.common.base.Strings;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CommonSuffixLengthMain {
public static void main(String[] args) throws IOException {
assert 5 == commonSuffixLength(Arrays.asList("Gloucestershire", "Hampshire", "Yorkshire", "Lancashire"));
assert 2 == commonSuffixLength(Arrays.asList("abc", "dbc", "qebc", "webc"));
assert 0 == commonSuffixLength(Collections.emptyList());
assert 0 == commonSuffixLength(Collections.singletonList("abc"));
assert 0 == commonSuffixLength(Arrays.asList("abc", "def", "zxc"));
}
private static int commonSuffixLength(final List<String> strings) {
int result = 0;
if (strings == null || strings.size() < 2) {
return result;
}
for (int i = 0; i < strings.size() - 1; i++) {
String prefix = Strings.commonSuffix(strings.get(i), strings.get(i + 1));
result = result == 0 ?
prefix.length() :
Math.min(prefix.length(), result);
}
return result;
}
}
これは、{'abc'、 'dbc'、 'qebc'、 'webc'}のために失敗します。 –
@TanujYadavそれを指摘してくれてありがとう。このケースをサポートするための答えを編集しました。 –
- 1. 文字列内の最も長い繰り返し1の長さを見つける
- 2. ルアの文字列の長さを見つけますか?
- 3. 3つの文字列の中で最も長い共通部分シーケンス
- 4. unixの2つの文字列の最も長い共通部分文字列を見つけるためのシェルコマンドは何ですか?
- 5. 最も長い繰り返し文字の位置を見つける
- 6. Perl - 2つ以上の文字列の最も長い共通接頭辞?
- 7. 複数の文字列の中で最も長い共通部分文字列を見つけるにはどうすればよいですか?
- 8. 辞書内の文字列の中で最も長いサブシーケンスを見つける
- 9. 最も長い共通部分文字列問題
- 10. 文字列タスク(JavaScript)の中で最も長い単語を見つけるエラー
- 11. 文字列から3つの最長単語を見つけよう
- 12. Swift - [String]配列の最長文字列を見つけるベストプラクティス
- 13. 文字列中で最長の単語を見つける
- 14. 最も長い共通部分列
- 15. 長さkの文字列の順列を見つける
- 16. Googleのスクリプトで文字列の長さを見つける
- 17. LINQを使用して文字列[]内で最も長い文字列を見つける方法
- 18. リストをElmでリスト内の最も長い文字列に減らす
- 19. 最長の文字列プレフィックスを見つける
- 20. アルファベット順に最長の部分文字列を見つける
- 21. Java:2つの文字列で共通文字を見つける
- 22. 文字列配列の長さを見つける方法は?
- 23. Railsで文字列の長さを見つけるには?
- 24. OpenJpa JPQLで文字列の長さを見つける方法
- 25. 特定の長さの文字列を見つけるVBA
- 26. ArrayList内の文字列の長さを見つける
- 27. 文字列中で最長類似サブシーケンスを見つける
- 28. 3つのシーケンスの中で最も長い共通サブシーケンス
- 29. 再帰とDPを使用する最も長い共通部分文字列
- 30. 文字列中の最も長い複製された部分文字列を見つけるのにJava関数が必要ですか?
あなたは何をしようとしましたか? – Oleg
最初にすべての文字列の最後の要素をチェックしてから最後に2番目のように –
私は文字列のリストではなく2つの文字列で試しました。次のURLは役に立ちました。 https://stackoverflow.com/questions/33839443/how-to-find-common-suffix-in-java-by-using-method –