public class Main {
public static String reverseWords(String s) {
StringBuilder reversed = new StringBuilder();
int j = s.length();
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) == ' ') {
j = i;
} else if (i == 0 || s.charAt(i - 1) == ' ') {
if (reversed.length() != 0) {
reversed.append(' ');
}
reversed.append(s.substring(i, j));
}
}
return reversed.toString();
}
public static void main(String[] args) {
String str = "sky is blue";
String retStr = reverseWords(str);
System.out.println(retStr);
}
}
这是一个经过验证的可运行和核心的母鹿。 IT反向句子的顺序。
但这一行。
reversed.append(s.substring(i, j));
它将在第一次被调用为s.substring(7,11)并且s是"天空是蓝色"。 所以你可以看到索引7是' b'但索引11是在'之后。
在c ++中我知道这个问题。但是为什么在Java中,这很好?如此迷茫。 我检查了java文档,它说substring()接受开始和结束索引。 我现在不知道。
需要帮助 感谢
答案 0 :(得分:1)
子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。