Как разбить строку на массив суффиксов?
Каков наиболее эффективный способ разбить строку на массив ее суффиксов?
Допустим, у вас есть строка "Хорошая погода", я хочу создать массив его суффиксов как таковой:
[0] = "nice"
[1] = "is nice"
[2] = "weather is nice"
[3] = "the weather is nice"
У меня есть доступ к строкам в форме итератора по его токенам (словам) от начала до конца.
3 ответа
Решение
Разбить массив на пробелы, используя 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
Очевидное решение состоит в том, чтобы разбить строку на пробелы и сохранить результат в ListArray<String>
в обратном порядке. Затем постройте свой ответ ListArray
от этого небольшая рекурсия полезна для души..