1. ホーム
  2. java

[解決済み] 文字列中に出現するすべての文字のインデックス

2022-05-18 14:26:02

質問

次のコードは2を表示します。

String word = "bannanas";
String guess = "n";
int index;
System.out.println( 
    index = word.indexOf(guess)
);

文字列 "bannanas" の中の "n" ("guess") のすべてのインデックスを取得する方法を知りたいのですが、どうすればよいでしょうか。

期待される結果は次のようになります。 [2,3,5]

どのように解決するのですか?

を除いたポジションのリストが表示されるはずです。 -1 を除いたリストを表示します。 Peter Lawreyの解決策 <ストライク があります。 がありました。

int index = word.indexOf(guess);
while (index >= 0) {
    System.out.println(index);
    index = word.indexOf(guess, index + 1);
}

として行うこともできます。 for ループとして行うこともできます。

for (int index = word.indexOf(guess);
     index >= 0;
     index = word.indexOf(guess, index + 1))
{
    System.out.println(index);
}

[注意: もし guess が一文字よりも長くなる可能性がある場合、それを解析することで guess の文字列を解析することで、ループして word をループすることで、上記のループよりも高速になります。このようなアプローチのベンチマークとなるのは Boyer-Mooreアルゴリズム . しかし、そのようなアプローチを用いるのに有利な条件は存在しないようです]。