您的位置:首页 > 其它

Leetcode Reverse Words in a String II

2015-10-11 03:02 465 查看
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.

The input string does not contain leading or trailing spaces and the words are always separated by a single space.

For example,
Given s = "
the sky is blue
",
return "
blue is sky the
".

Could you do it in-place without allocating extra space?

Related problem: Rotate Array

解题思路:

Leetcode Rotate Array 思路一样。

(1)reverse the whole array

(2)reverse each subarray seperated by ' '

Java code:

public class Solution {
public void reverseWords(char[] s) {
reverse(s, 0, s.length-1);
int start = 0;
for(int i = 0; i< s.length; i++){
if(s[i] == ' '){
reverse(s, start, i-1);
start = i+1;
}
}
reverse(s, start, s.length-1);
}

public void reverse(char[] s, int l, int r){
while(l < r){
char temp = s[l];
s[l] = s[r];
s[r] = temp;
l++;
r--;
}
}
}


Reference:

1. http://www.cnblogs.com/EdwardLiu/p/4306561.html
2. https://leetcode.com/discuss/24227/my-java-solution-with-explanation
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: