题目描述
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
解题思路
将字符串转换为字符数组,遍历数组,碰见空格则反转单词,最后一个单词需要在不再小于数组长度时反转。
代码实现
class Solution {
public String reverseWords(String s) {
int i=0,j=0;
if(s.length()==0||s==null)return s;
char[] str=s.toCharArray();
while(i<str.length&&str[i]==' '){i++;j++;}
if(i==str.length){return "";}
for(;;){
if(i<str.length){
if(str[i]==' '){
reverse(str,j,i-1);
i++;j=i;
}else i++;
}
else {reverse(str,j,i-1);break;}
}
return String.valueOf(str);
}
public void reverse(char[] s,int start,int end){
while (start < end) {
char temp = s[start];
s[start] = s[end];
s[end] = temp;
start++;
end--;
}
}
}
执行用时 :
8 ms
, 在所有 Java 提交中击败了92.79%的用户
内存消耗 :
48.6 MB, 在所有 Java 提交中击败了53.53%的用户