首页 > 其他 > 详细

LeetCode 37. Count and Say

时间:2017-06-02 13:06:12      阅读:252      评论:0      收藏:0      [点我收藏+]

n-1为迭代的次数。字符串num初始为"1".

每次迭代就開始数字符串中数字的个数,有一个trick是,当 当前数字与前一位(高位)不同一时候就停止计数:

所以1211的下一个字符串应该是111221(1个1, 1个2, 2个1), 而不是1231(而不是1个2, 3个1).


代码:

class Solution 
{
public:
	string countAndSay(int n) 
	{
		string num("1"), next_num;
		
		for (int i = 1; i < n; ++ i)
		{
			int cnt = ‘0‘, last = num[0];
			next_num.clear();
			for (size_t j = 0; j < num.size(); ++ j)
			{
				if (num[j] == last)
				{
					++ cnt;
				} else
				{
					next_num += cnt;
					next_num += last;
					cnt = ‘1‘;
					last = num[j];
				}
			}
			next_num += cnt;
			next_num += last;
			num = next_num;
		}

		return num;
	}
};


LeetCode 37. Count and Say

原文:http://www.cnblogs.com/jzssuanfa/p/6932748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!