Tuesday, November 25, 2014

Count and Say

 easy
生成规律就是代码思路~用prev记录第i个字符串,cur为第i+1个字符串。

逐个访问prev的元素并进行统计。c为当前字符,count为c连续出现的个数。

当前访问的元素prev[i]与c不同时,将count, c转化成字符串格式,插入cur中;更新c和count. 

string countAndSay(int n) {
    string prev="1";
    string cur="";
    for(int i=2;i<=n;i++){
        int len=prev.length();
        char c=prev[0];
        int count=1;
        int j=1;
        while(j<len){
            if(c==prev[j]){
                j++;count++;
            }else{
                cur+='0'+count;
                cur+=c;
                count=1;
                c=prev[j++];
            }
        }
        cur+='0'+count;
        cur+=c;
        prev=cur;
        cur="";
    }
    return prev;
}

No comments:

Post a Comment