美文网首页
[String]038 Count and Say*

[String]038 Count and Say*

作者: 野生小熊猫 | 来源:发表于2018-10-21 11:15 被阅读0次
  • 分类:String

  • 考察知识点:String

  • 最优解时间复杂度:O(n^2)

  • 最优解空间复杂度:O(n)

38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:

Input: 1
Output: "1"

Example 2:

Input: 4
Output: "1211"

代码:

方法:

class Solution:
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        i=1
        res="1"
        while(i<n):
            count=0
            ch=res[0]
            new_res=""
            for j in range(len(res)+1):
                if j!=len(res) and res[j]==ch:
                    count+=1
                else:
                    #总结
                    new_res+=str(count)+str(ch)
                    #如果没完就继续
                    if j!=len(res):
                        count=1
                        ch=res[j]
            res=new_res
            i+=1
        
        return res

讨论:

1.这道题在facebook面试中比较常考,而且就一段时间常考,在其他的面试中没咋出现过
2.我咋觉得这道题最重要的是考察你看没看懂题目了(因为我就没看懂= =)
3.这里的j在的range是len(res)+1,因为要留最后一下总结,可千万别忘了,这很重要

Facebook常考

相关文章

网友评论

      本文标题:[String]038 Count and Say*

      本文链接:https://www.haomeiwen.com/subject/jexbzftx.html