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


posted on 2017-04-26 16:21  yutingliuyl  阅读(101)  评论(0编辑  收藏  举报