LeetCode 38. Count and Say题目分析代码

题目

报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:

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

1 读作 "one 1" -> 11.

11 读作 "two 1s" -> 21.

21 读作 "one 2, then one 1" -> 1211.

给定一个整数 n, 返回 第 n 个顺序。

** 注意事项 整数的顺序将表示为一个字符串。**

样例 给定 n =5, 返回"111221"

分析

看过去这道题,好像很复杂,其实仔细分析,会发现思路很清晰。不管算第几个数,我们都要从第一个数算起,每个数都要根据前一个数算出来。算数的过程就两个点,一个计算count,那个数出现的次数,一个这个数本身,所以两个临时变量每次都要这两个数就可以。

代码

public class Solution {
    /**
     * @param n the nth
     * @return the nth sequence
     */
    public String countAndSay(int n) {
        // Write your code here
        String oldString = "1";
        while (--n>0){
            StringBuilder sb = new StringBuilder();
            char[] oldChars = oldString.toCharArray();
            for(int i=0;i<oldChars.length;i++){
                int count = 1;
                while((i+1)<oldChars.length && oldChars[i]==oldChars[i+1]){
                    count++;
                    i++;
                }
                sb.append(String.valueOf(count) + String.valueOf(oldChars[i]));
            }
            oldString = sb.toString();
        }
        return oldString;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C#

数组未必一定需从0开始,谈一下非0开始的数组

  谈到数组时,当被问及数组是从什么数开始时,估计大部分程序员都会直接说出数组当然是从0开始的。这个回答当然没有错,现在我们就来了解一下C#中的下限非...

1905
来自专栏猿人谷

查找链表中倒数第k个结点

题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode { in...

2175
来自专栏二进制文集

Java 八大排序实现

将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序...

1935
来自专栏北京马哥教育

Python练手题,敢来挑战吗?

这到题用到了字符串的所有字母大写和所有字母小写和字符串拼接,复制,用到的函数有 json 将列表中的内容按照指定字符连接成一个字符串,

1100
来自专栏Coding迪斯尼

使用普拉特分析法解析极为复杂的算术表达式

1153
来自专栏数据结构与算法

BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)

Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制...

701
来自专栏闻道于事

Java综合题目

分支, 循环, 数据类型 1, 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2, 题目:有一分数序列:2/1,3/2...

4045
来自专栏Golang语言社区

Golang中Interface类型详解

本文章翻译自《Let's learn Go》的“Interfaces: the awesomesauce of Go”一节 原文地址:http://go-bo...

3767
来自专栏一个会写诗的程序员的博客

第11章 运算符重载与约定第11章 运算符重载与约定

我们在《第2章 Kotlin 语法基础》中已经学习过关于运算符的相关内容,本章将继续深入探讨Kotlin中的运算符的重载与约定。

1544
来自专栏编程直播室

读书笔记:《算法图解》第一章 算法简介时间复杂度#

1834

扫码关注云+社区

领取腾讯云代金券