38. Count and Say

转载出处不记得了,因为是前几天网上找到的代码,在VS里面运行过,今天重新翻出来学习。刚才试着搜索了一下,没找到原始链接。感谢原创者。

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;

        }  

Soulution 2:http://www.cnblogs.com/etcow/archive/2012/08/29/2661290.html


Soulution 3:https://segmentfault.com/a/1190000003849544


Soulution 4:根据3的方法微量调整


public class Solution {
    public string CountAndSay(int n) {
        if(n<=0) return "";
        if(n==1) return "1";
        string s=CountAndSay(n-1);
        char last=s[0];
        int cnt=1;
        StringBuilder sb=new StringBuilder();;
        for(int i=1;i<s.Length;i++)
        {            
            if(s[i]==last)
                cnt++;
            else
            {
                sb.Append(cnt);
                sb.Append(last);
                last=s[i];
                cnt=1;
            }
        }
        sb.Append(cnt);
        sb.Append(last);
        return sb.ToString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值