`
frank-liu
  • 浏览: 1683032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: 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.
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.

原问题链接:https://leetcode.com/problems/count-and-say/

 

问题分析

  因为这里是根据一个数字来递推另外一个串。最开始的情况是只有字符串"1",这也是针对n = 1的情况。在后面,对于任何一个串来说,我们需要在遍历的时候计算当前的那个元素出现的次数。在碰到相同元素的时候对计数加一,否则说明碰到另外的一个数字了,需要将当前的数字和出现的次数放到一个串里,然后再将当前不同的那个值设为当前值。在循环遍历结束后,还要将当前的这个值和出现的次数加入到串里。这样就得到了一个一次转换后的结果。

  对于给定数字n来说它无非就是按照上述的变换执行了n次。所以可以很容易的得到如下的代码:

 

public class Solution {
    public String countAndSay(int n) {
        String s = "1";
        for(int i = 1; i < n; i++) {
            s = countNumbers(s);
        }
        
        return s;
    }
    
    private String countNumbers(String s) {
        if(s.length() == 1) {
            return 1 + s;
        }
        char cur = s.charAt(0);
        int count = 1;
        StringBuilder builder = new StringBuilder();
        for(int i = 1; i < s.length(); i++) {
            if(s.charAt(i) == cur)
                count++;
            else {
                builder.append(count + "" + cur);
                cur = s.charAt(i);
                count = 1;
            }
        }
        builder.append(count + "" + cur);
        return builder.toString();
    }
}

 

 

分享到:
评论

相关推荐

    LeetCode原题Count and Say

    Leetcode原题Count and Say count-and-say序列是整数序列,前五个术语如下: 1. 1 2. 11 3. 21 1211 5. 111221 1被读作“1”或11。 11被读作“两个1”或21。 21被读作“一个2,然后一个1”或1211。 给定整数n,...

    leetcode卡-LeetCode:LeetCode题解

    leetcode卡 LeetCode LeetCode题解 目录 字符串问题 ID Title C++ 难度 备注 0008 String to Integer(atoi) ...Count and Say :star: 0043 Multiply Strings :star: :star: 大数相乘 0044 Wild Card Matchi

    leetcode答案-LeetCode:Swift中的LeetCode

    leetcode 答案LeetCode LeetCode in Swift 这个Repo 用来存下我在LeetCode ...Count and Say Easy #53 Maximum Subarray Easy #66 Plus One Easy #70 Climbing Stairs Easy #83 Remove Duplicates from Sorted L

    leetcode中国-leetcode:leetcode刷题

    leetcode中国 我自己的leetcode刷题记录 ###[20150920] ...count and say , easy , 模拟 Anagrams 字符串处理,map Simplify Path,字符串处理,stack Length of Last Word,字符串处理.细节题 Rever

    2sumleetcode-LeetCode:力码

    1_count_and_say.cpp - super_ugly_number.cpp - Detect_Pattern.cpp - degree_of_array.cpp - 键盘.cpp - 2Sum_Data_Structure_Design.cpp - shuffle_array.cpp - permutations.cpp - kth_missing_number.cpp - 3...

    leetcode添加元素使和等于-leetcode:leetcode

    Count_and_Say 循环n次依次计算即可,注意0次等边界情况 Longest_Consecutive_Sequence 双向确认是否连续,避免重复的n^2复杂度 Palindrome_Partitioning DP,避免递归调用,利用数组储存已算出来的数值,由后向前...

    js-leetcode题解之38-count-and-say.js

    js js_leetcode题解之38-count-and-say.js

    LeetCode最全代码

    201 | [Bitwise AND of Numbers Range](https://leetcode.com/problems/bitwise-and-of-numbers-range/) | [C++](./C++/bitwise-and-of-numbers-range.cpp) [Python](./Python/bitwise-and-of-numbers-range.py) | _...

    python-leetcode面试题解之第38题外观数列-python题解.zip

    在LeetCode平台上,面试题38(也称为"Count and Say")是关于字符串处理的一个有趣问题,被称为“外观数列”。这道题目的目标是根据给定的数字序列构建一个新的序列,其中每个数字表示原序列中连续相同数字的个数。...

    _leetcode-python.pdf

    - Count and Say: 第n个数是“1”,“21”,“1211”,“111221”等描述的下一个数。 - Combination Sum: 找出所有相加之和为特定值的组合。 - First Missing Positive: 找出数组中缺失的最小正数。 - Trapping Rain...

    leetcode和oj-OJ_Solution:leetcode、poj等OJ解决方案

    https://leetcode.com/problems/count-and-say/ 3, java/dungenegame https://leetcode.com/problems/dungeon-game/ 4, java/findminrotaed 5, java/houserobber https://leetcode.com/problems/house-robber/

    算法刷题笔记leetcode/lintcode

    - Count and Say(猜数字序列) - **Integer Array**(整型数组操作) - Remove Element(移除元素) - Zero Sum Subarray(连续子数组的最大和) - Subarray Sum K(子数组总和等于K) - Subarray Sum Closest...

    c++-c++编程基础之leetcode题解第38题外观数列.zip

    第38题,名为“外观数列”(Count and Say),是一道有趣的题目,旨在考察程序员对字符串处理和迭代的理解。在这个问题中,我们需要构建一个序列,其中每个数字都是前一个数字的描述。 外观数列的定义如下:序列1...

    LeetCode解题总结

    3.12 Count and Say 3.13 变位词 3.14 简化系统路径 3.15 最后一个单词的长度 3.16 反转字符串中的单词 3.16.1 字符串前后和中间可能存在多个空格 3.16.2 不存在前后和中间的多余空格 3.17 一个编辑距离 4. 栈 4.1 ...

    C语言基础-C语言编程基础之Leetcode编程题解之第38题外观数列.zip

    “外观数列”(Count and Say Sequence)是指一个序列,它的第n项是由前一项生成的。生成规则如下:读取上一项中的每一个数字,然后计数该数字在上一项中出现的次数,最后按照这个顺序写出计数结果。例如,序列的第...

    leetcode给单链表加一js实现-leetcode-By[removed]LeetCode解决方案(全部通过JavaScript!)h

    leetcode给单链表加一js实现 LeetCode By JavaScript LeetCode Solutions (All By JavaScript!) 的个人Solutions汇总,全部使用JavaScript完成:grinning_squinting_face: 目的:了解、掌握数据结构和算法,当然...Say:

    判断链表是否为回文链表leetcode-Algos_Practice:来自Leetcode、HackerRank等网站的练习题

    “count_n_say.py” - 使用迭代方法生成 Count 和 Say 序列的第 n 项。 “count_segments.py” - 该算法计算字符串中的段数,其中段被定义为连续的非空格字符序列。 "count_negatives_2d_array.py" - 给定一个二维...

    lovely-nuts:这是一个可爱的坚果

    Practice-Leetcode 这是一个Chinese School Girl:China:用来练习leetcode的文档.每道下面的题都有详细的解题思路,和知识点分析,尽请参考。 找实习的小伙伴也可以参考我的Tech-blog...038.Count and Say 递归 040.C

    leetcode_resolve.rar_Java编程_Java_

    报数**:这是一个经典的计数问题,称为“Count and Say”。Java实现时,需要用到字符串处理和循环逻辑。 8. **39. 组合总和**:题目要求找出所有可能的组合,使得它们的和等于给定的目标值。Java中,回溯法是一种...

    数据结构与算法leetcodelintcode题解1

    - 计数和说(Count and Say)。 2. **数组**: - 删除数组中的指定元素。 - 寻找数组中和为 K 的子数组。 - 找到最接近目标和的子数组。 - 恢复旋转排序数组。 - 排除自身的产品。 - 分割数组使奇数和偶数...

Global site tag (gtag.js) - Google Analytics