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

Count and Say

时间:2015-02-05 20:29:03      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:leetcode   string   

一、 题目

题目说,如下的字符串:

1, 11, 21, 1211, 111221, ...

1读成11(一个1)

11读成21(两个1)

21读成(一个2一个1)

......

给一个整数,返回对应得语句。返回语句为一个字符串

二、 分析

题目的意思不是很明白,其实就是说第i+1个字符串是第i个字符串的读法,第一字符串为 “1

比如第四个字符串是1211,它的读法是 1112,21,因此第五个字符串是111221。第五个字符串的读法是:312211,因此第六个字符串是312211

明白了题意,我们不难想到思路:

1、初始字符串为”1”,字符ch为 str[0],中间字符串为str2;

2、从1开始循环产生字符串直到n

3、遍历字符串,计数相连的相同字符,并产生新的字符串; 

 

class Solution {
public:
    string countAndSay(int n) {
        if(n == 0)
        	return "";
        string str = "1";
        for(int i = 1; i < n; i++){
        	char ch = str[0];
        	string str2 = "";
        	int count = 1;
        	for(int j=1;j<str.size();j++){
        		if (str[j] == ch)
        			count ++;
        		else if(count > 0){
        			str2 = str2 + char(count + '0') + ch;
        			count = 1;
        			ch = str[j];
				}
			}
        	str2 = str2 + char(count + '0') + ch;
        	str = str2;
        }
        return str;
    }
};

Count and Say

标签:leetcode   string   

原文地址:http://blog.csdn.net/zzucsliang/article/details/43534789

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