文字列をサフィックスの配列に分割する最も効率的な方法は何ですか?
「The weather is nice」という文字列があるとします。そのサフィックスの配列を次のように生成します。
[0] = "nice"
[1] = "is nice"
[2] = "weather is nice"
[3] = "the weather is nice"
最初から最後まで、そのトークン (単語) に対して反復子の形式で文字列にアクセスできます。
を使用して配列をスペースで分割しsplit
、結果のトークンを後ろから前に移動し、前のサフィックスを取得して、現在のトークンを前に追加します。以前のサフィックスがない場合は、空の文字列を使用します。
String str = "quick brown fox jumps over the lazy dog";
List<String> res = new ArrayList<String>();
String last = null;
String[] tok = str.split(" ");
for (int i = tok.length-1 ; i >= 0 ; i--) {
if (last == null) {
last = tok[i];
} else {
last = tok[i] + " " + last;
}
res.add(last);
}
for (String s : res) {
System.out.println(s);
}
このプリント
dog
lazy dog
the lazy dog
over the lazy dog
jumps over the lazy dog
fox jumps over the lazy dog
brown fox jumps over the lazy dog
quick brown fox jumps over the lazy dog
.split(" "); の呼び出し 文字列内の単語の配列を返します。
明らかな解決策は、文字列をスペースでトークン化し、結果をListArray<String>
逆の順序で格納することです。次に、それから答えListArray
を作成します。少しの再帰は魂に良い..