Stringの配列を持ち、Stringの一部として他の文字が含まれているかどうか確認したい。Java - 文字列の配列 - 特定の要素が他の文字列のPARTであるかどうかを確認します( "Duplicates"をfinidngしない)
たとえば、単純な配列に従うことを検討してください。最後に
s[0]="Java"
s[1]="Java Programming"
s[2]="C Programming"
s[3]="C Programming is Cool"
S [1]はSを含んでいるので、私は[0]、S
s[1]="Java Programming"
s[3]="C Programming is Cool"
を保持する[3] [2] Sを含有します。
この
は、配列要素がString.Contains本当に基本的な非効率的なようだ()メソッドを使用して、配列の要素が含まれている場合..int startPtr = 0;
while (startPtr < s.length-1) {
int tempPtr = startPtr+1;
while (tempPtr <= s.length-1) {
if (s[tempPtr].contains(s[startPtr])) {
//At this point, I know that I don't need s[startPtr] in result.
//Remove item at startPtr, if this were ArrayList or something.
startPtr++;
break;
} else { indexPtr++; }
}
を検出するために私のコードで、startPtrが最後に到達した後、私は私が持っていると思います逆の順序で同じことを行い(最後から始め、配列の先頭に向かってチェックする)、文字列が他の文字列要素の一部でないことを確認します。
もっと良いアルゴリズムを教えてもらえますか? また、このalogirthmはO(N^2)を持つと私は正しいと思いますか?
正しいですか?そのO(N^2)* O(文字列比較のための時間)。 – v78
あなたはより良いbig-Oパフォーマンスを得るために何かを非常に巧妙に考える必要があります。基本的には、すべての文字列を他のすべての文字列と比較しなければなりません。それは、本質的に 'contains()'への2次呼び出しを必要とします。 –
@Jay結果を同じ配列に、同じ位置/順序で保持することは重要ですか? – mapeters