题目概述 :
遍历字符串,先数,遇到相邻同样则++count。否则累加字符串。对于
1 : 1个1 : "11"
11 : "2个1" : "21"
21 : "1个2 1个1": "1211" ...
问题: 求第n项
实现思路:
外循环0...n,从第一项開始求,一直求到n
遍历字符串str。
count初始化为1,str2为空。
推断相邻字符是否相等(注意处理末尾字符的情况),相等则++count,否则str2 += count.ToString()+str的上一位
遍历之后将str=str2
直到外循环的n结束为止
实现代码:
public string CountAndSay(int n) { if(n <= 0 ){ return string.Empty; } if(n == 1){ return "1"; } n = n-1; var result = "1"; for(var i = 0; i < n ; i++){ var r = string.Empty; var len = result.Length; var count = 1; for(var j = 1;j < len+1; j++){ if(j < len && result[j] == result[j-1]){ count ++; } else{ r += string.Format("{0}{1}",count,result[j-1]); count=1; } } result = r; } return result; }