2021年9月8日11:10:56
2021年9月8日11:44:43
卡半天在 边界判定上
首先对整体进行翻转 然后对 每个单词进行翻转 两次翻转就可以得到正确的
left right 代表单词 [,)左闭右开 因此right到最后一个词应该是能继续的right<=str.length() 有等号
res = res.substring(0,left) + temp + res.substring(right); 对res中的数组进行翻转
从 left 到right的位置 左闭右开
接下来主要判断是不是到结尾了 后面还有没有空格 如果还有 就说明可以继续 如果到结尾了 就退出循环结束 否则的话由于判断有等号 会一直循环
但是发现 每次都把left变成++right; 最后到结尾 会直接超出 不需要多余的判断
public class Solution {
public String ReverseSentence(String str) {
String res = Reverse(str);
int left = 0;
int right = 0;
while(right<=str.length()){
if(right < res.length() && res.charAt(right) != ' ' ) {right++;continue;}
String temp = Reverse(res.substring(left,right));
res = res.substring(0,left) + temp + res.substring(right);
left = ++right;
/***if(right == str.length()) break;
//else left = ++right; 也是一样的
if(res.charAt(right) == ' '){
left = ++right;
}***/
}
return res;
}
public String Reverse(String str) {
int length = str.length();
String reverse = "";
for (int i = 0; i < length; i++){
reverse = str.charAt(i) + reverse;
}
return reverse;
}
}


京公网安备 11010502036488号