LintCode 53. 翻轉字符串

LintCode 53. 翻轉字符串

問題描述

給定一個字符串,逐個翻轉字符串中的每個單詞。
說明
單詞的構成:無空格字母構成一個單詞
輸入字符串是否包括前導或者尾隨空格?可以包括,但是反轉後的字符不能包括
如何處理兩個單詞間的多個空格?在反轉字符串中間空格減少到只含一個
樣例
“How are you?”–>”you? are How”

問題分析

由樣例可知,變換後的字符串是由輸入的字符串整個翻轉但單詞不翻轉,可以先將整個字符串翻轉,在翻轉單詞就可以了,注意空格的操作。

代碼

class Solution {
public:
    /*
     * @param s: A string
     * @return: A string
     */
    string reverseWords(string &s) {
        // write your code here
        if (s == "") return s;
        string s1 = "";
        int count = 0;
        reverse(s.begin(),s.end());  
        for (int i = 0; i < s.length(); i++) {
            if (s[i] != ' ') {
                count = counts(s,i);
                reverse(s.begin() + i ,s.begin() + i + count);  
                s1 += s.substr(i,count) + " ";
                i += count - 1;
            }
        }
        return s1;
    }
    int counts(string &s,int num) {
        int count = 0;
        for(int i = num; i < s.length(); i++) {
            if(s[i] != ' ')
                count++;
            else
                break;
        }
        return count;
    }
};

代碼思路

int counts(string &s,int num)這個函數的作用是記錄每一個單詞的長度,這樣就可以翻轉指定長度的單詞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章