LeetCode --- Count And Say


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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值