1. 程式人生 > >leetcode 38. Count and Say

leetcode 38. Count and Say

題目解釋有點繞:大致意思是 1 可以讀作 1個1(11)    11可以讀作2個1(21).。。。

明白題意後,可以想到,遍歷字串,計數重複的數字,連線字串即可

class Solution {
public:
    string countAndSay(int n) {
        if(n == 1){
            return "1";
        }else{
            n -= 1;
            string str = "1";
            while(n--){
                string tmp = "";
                int count = 1;
                for(int i = 0;i <str.size();++i ){
                    
                    if((str[i] == str[i+1]) && ((i+1) <str.size())){
                        count++;
                        continue;
                    }else{
                        
                        tmp =  tmp+ to_string(count) + str[i];
                        count = 1;
                    }
                }
                str = tmp;
            }  
             return str;
        }
       
    }

};