空格分割
public class Solution {
public String ReverseSentence(String str) {
if(str==null||str.equals(""))
return str;
//疑惑 不知道为什么str.equals(" ")通不过测试用例
//今天又看到这个题了 突然get到如果有一堆空格就不行。
String[] strs=str.split(" ");
if(strs.length<=1)
return str;
int l=0,r=strs.length-1;
while(l<r){
String s=strs[l];
strs[l]=strs[r];
strs[r]=s;
l++;
r--;
}
String res="";
for(int i=0;i<strs.length-1;i++)
res+=strs[i]+" ";
res+=strs[strs.length-1];
return res;
}
}
/*
//滑动窗口思想
public String ReverseSentence(String str) {
if (str == null || str.trim().length() == 0) return str;
char[] chars = str.toCharArray();
reverseChars(chars, 0, str.length() - 1);
// 利用滑动窗口
// 遇到' '执行翻转
int l = 0;
int r = 0;
while (l < str.length()) {
if (chars[r] == ' ') {
reverseChars(chars, l, r - 1);
// 交换完之后,一起跳过' '
r++;
l = r;
}
if (r == str.length() - 1) {
reverseChars(chars, l, r);
// 到了最后交换玩就break,否则r会出现越界,可以在while中加对r的判断
break;
}
r++;
}
return String.valueOf(chars);
}
private void reverseChars(char[] chars, int l, int r) {
while (l < r) {
char temp = chars[l];
chars[l] = chars[r];
chars[r] = temp;
l++;
r--;
}
}
*/
京公网安备 11010502036488号