资讯专栏INFORMATION COLUMN

leetcode 38 count and say

不知名网友 / 2027人阅读

摘要:而读起来是两个,所以第三个字符串就应当是。同理第四个字符串是一个一个,因此是。依次类推而我们的目的是,对于输入的正整数,我们要给出第个字符串是什么。这里采用了是为了减少内存的开销。解法设置初始字符串将重新赋值当前字符字符计数

题目详情
The count-and-say sequence is the sequence of integers with the first five terms as following:
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 term of the count-and-say sequence.

这道题目理解起来有一些晦涩。大意就是对于一串字符串,我们要用“读”的方式把这个字符串读一遍,“读”结果就是下一个字符串的值。
例如初始字符串是“1”,读的结果就是1个11,所以第二个字符串就是11。而11读起来是两个1,所以第三个字符串就应当是“21”。同理第四个字符串是一个2一个1,因此是"1211"。依次类推
而我们的目的是,对于输入的正整数n,我们要给出第n个字符串是什么。

Example 1:
Input: 1
Output: "1"
Example 2:
Input: 4
Output: "1211"

想法

如果我们要获得第n个字符串,那我们首先要获得第n-1个字符串的值。所以我们设置一个prev变量来保存每一次操作的到的字符串的值,从而进行下一次操作。

操作其实就是从前到后对每一个字符(say)连续出现的次数计数(count),如果字符变了,那么就将刚才count和say的值加入curr字符串中。

这里采用了StringBuilder是为了减少内存的开销。这里说一下StringBuilder 和 String 的区别,在使用String时,每次的修改都会使系统在内存中创建一个新的对象,这样在我们对string进行频繁修改的时候,string对象的开销可能会十分昂贵。‘

解法
public class CountandSay_38 {
    public String countAndSay(int n) {
        //设置初始字符串            
        StringBuilder curr = new StringBuilder("1");
        StringBuilder prev;
        
        for(int i=1;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69941.html

相关文章

  • leetcode38 count and say 数数游戏

    摘要:题目要求英文的题目有点绕口,所以去网上找了一下题目的意思。题目的核心逻辑在于将口语化的数数字转化为字符串。 题目要求 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...

    dabai 评论0 收藏0
  • [Leetcode] Count and Say 数个数

    摘要:反转字符法复杂度时间空间思路因为数字不好从前向后遍历每一位要先统计一共有多少位,比较麻烦,所以我们直接从后向前计数,最后把结果倒置就行了。 Count Consecutive Digits in Integer Count consecutive digits and say it. For example, return 132341 if input is 1112224. The...

    whjin 评论0 收藏0
  • [Leetcode] Count And Say 外观序列

    摘要:递归解法复杂度时间空间递归栈思路该序列又叫做外观序列,无论如何我们都得将前一个序列元素算出来,才能计算后一个序列元素。当递归至的时候返回初始数字。另外,比如初始数字,第一次变成了,我们可以发现大于的数都只会一个一个出现了。 Count And Say The count-and-say sequence is the sequence of integers beginning as...

    Towers 评论0 收藏0
  • leetcode部分题目答案之JavaScript版

    摘要:自己没事刷的一些的题目,若有更好的解法,希望能够一起探讨项目地址 自己没事刷的一些LeetCode的题目,若有更好的解法,希望能够一起探讨 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...

    alphahans 评论0 收藏0
  • leetcode 部分解答索引(持续更新~)

    摘要:前言从开始写相关的博客到现在也蛮多篇了。而且当时也没有按顺序写现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。顺序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 从开始写leetcode相关的博客到现在也蛮多篇了。而且当时也没有按顺序写~现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。 顺序整理 1~50 1...

    leo108 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<