LeetCode 38 Count and Say

題意:

定義一種迭代,1, 11, 21, 1211, 111221, ...,比如1211 -> 111221表示1211從左往右讀爲1個1、1個2、2個1,求迭代n輪的結果。


思路:

用string暴力模擬迭代過程,不推薦迭代計數x個y這種方式,因爲x>9的時候會變成2個數字,用string更好處理。


代碼:

class Solution {
public:
    string countAndSay(int n) {
        string s = "1";
        while (--n) {
            stringstream ss;
            int cnt = 1;
            for (int i = 1; i < s.size(); ++i) {
                if (s[i] != s[i - 1]) {
                    ss << cnt << s[i - 1];
                    cnt = 1;
                } else {
                    ++cnt;
                }
            }
            ss << cnt << s[s.size() - 1];
            s = ss.str();
        }
        return s;
    }
};


發佈了285 篇原創文章 · 獲贊 41 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章