码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 37. Count and Say

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

标签:而不是   停止   字符串   ring   and   for   class   迭代   ast   

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

标签:而不是   停止   字符串   ring   and   for   class   迭代   ast   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!