1. 程式人生 > >反轉字串中的單詞 III

反轉字串中的單詞 III

給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

示例 1:

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"

注意:在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。

class Solution {
    public String reverseWords(String s) {
        char[] buffer = s.toCharArray();
        int length = buffer.length;
        int left = 0, right = 0;
        boolean last;
        for(int i = 0; i < length; i++){
            last = i == length-1;
            if(buffer[i] == ' '||last){
                left = right;
                right = i-(last?0:1);
                for(;left<right;left++,right--){
                    char temp = buffer[left];
                    buffer[left] = buffer[right];
                    buffer[right] = temp;
                }
                right = i+1;
            }
        }
        return new String(buffer);
    }
}
class Solution {
public:
    string reverseWords(string s) {
        int i = 0, j = 0;
        string res;
        while(j < s.length()){
            if(j != s.length()-1){
                if(s[j] != ' ') j++;
                else{
                    for(int k = j-1; k >= i; k--) res += s[k];
                    res += ' ';
                    j++;
                    i = j;
                }
            }else{
                for(int k = j; k >= i; k--) res += s[k];
                break;
            }
        }
        return res;
    }
};