题目概述 :
遍历字符串,先数,遇到相邻相同则++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;
}