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

LeetCode解题报告-- Count and Say

时间:2015-12-03 15:39:01      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

题目:

The count-and-say sequence is the sequence of integers
beginning as follows:
1, 11, 21, 1211, 111221, …
1 is read off as “one 1” or 11.
11 is read off as “two 1s” or 21.
21 is read off as “one 2, then one 1” or 1211.
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
点击解题:Count and Say

分析:题意是要求通过程序生成一组符合题意要求的字符串,
题目难度不高,基本思路是:以n为例,直接从左向右扫描n-1字符串,计算出现相同数字的个数 ,直至扫描结束!示意图如下:初始:count = 1,,每遇到数字相同,count++,然后将count转为字符串或字符类型 + 当前数组字符 以此为规律找出nth字符串。
技术分享

java代码: Accepted

public class Solution {
    public String countAndSay(int n) {
       String newS = "1";
       int count = 1;
       int i = 1;
       while(i < n){
           String s = newS;
           newS = "";
           for(int j = 0;j < s.length();j ++){
                if( (j + 1) < s.length() && s.charAt(j) == s.charAt(j + 1)){
                    count ++;
                }else{
                    newS = newS + count + s.charAt(j);
                    count = 1;
                }
            }
            i ++;
       }
       return newS;
    }
}

python代码 Accepted

class Solution(object):
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        i = 1
        count = 1
        newS = "1"

        while i < n:
            s= newS
            newS = ""

            for j in range(len(s)):
                if((j + 1) < len(s) and s[j] == s[j + 1]):
                    count = count + 1
                else:
                    newS = newS + str(count) + s[j]
                    count = 1
            i = i + 1
        return newS

LeetCode解题报告-- Count and Say

标签:

原文地址:http://blog.csdn.net/github_27609763/article/details/50161021

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