文字列内の文字のすべての出現箇所のインデックス 質問する

文字列内の文字のすべての出現箇所のインデックス 質問する

次のコードは2を出力します

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

文字列「bannanas」の「n」(「推測」)のすべてのインデックスを取得する方法を知りたいです。

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

ベストアンサー1

-1これにより、末尾のを除いたポジションのリストが印刷されます。ピーター・ローリーの解決策 持っていまし た。

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が1文字より長い場合は、guess文字列を解析することで、上記のループよりも高速にループすることができますword。このようなアプローチのベンチマークは、ボイヤー・ムーアアルゴリズムしかし、そのようなアプローチを採用するのに有利な条件は存在しないようです。

おすすめ記事