LeetCode解题报告-- Count and Say

来源:互联网 发布:用手机听小说的软件 编辑:程序博客网 时间:2024/05/01 23:02

题目:

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
1 0
原创粉丝点击