问题描述:
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 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题解 目录 字符串问题 ID Title C++ 难度 备注 0008 String to Integer(atoi) ...Count and Say :star: 0043 Multiply Strings :star: :star: 大数相乘 0044 Wild Card Matchi
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刷题记录 ###[20150920] ...count and say , easy , 模拟 Anagrams 字符串处理,map Simplify Path,字符串处理,stack Length of Last Word,字符串处理.细节题 Rever
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...
Count_and_Say 循环n次依次计算即可,注意0次等边界情况 Longest_Consecutive_Sequence 双向确认是否连续,避免重复的n^2复杂度 Palindrome_Partitioning DP,避免递归调用,利用数组储存已算出来的数值,由后向前...
js js_leetcode题解之38-count-and-say.js
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) | _...
在LeetCode平台上,面试题38(也称为"Count and Say")是关于字符串处理的一个有趣问题,被称为“外观数列”。这道题目的目标是根据给定的数字序列构建一个新的序列,其中每个数字表示原序列中连续相同数字的个数。...
- Count and Say: 第n个数是“1”,“21”,“1211”,“111221”等描述的下一个数。 - Combination Sum: 找出所有相加之和为特定值的组合。 - First Missing Positive: 找出数组中缺失的最小正数。 - Trapping Rain...
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/
- Count and Say(猜数字序列) - **Integer Array**(整型数组操作) - Remove Element(移除元素) - Zero Sum Subarray(连续子数组的最大和) - Subarray Sum K(子数组总和等于K) - Subarray Sum Closest...
第38题,名为“外观数列”(Count and Say),是一道有趣的题目,旨在考察程序员对字符串处理和迭代的理解。在这个问题中,我们需要构建一个序列,其中每个数字都是前一个数字的描述。 外观数列的定义如下:序列1...
3.12 Count and Say 3.13 变位词 3.14 简化系统路径 3.15 最后一个单词的长度 3.16 反转字符串中的单词 3.16.1 字符串前后和中间可能存在多个空格 3.16.2 不存在前后和中间的多余空格 3.17 一个编辑距离 4. 栈 4.1 ...
“外观数列”(Count and Say Sequence)是指一个序列,它的第n项是由前一项生成的。生成规则如下:读取上一项中的每一个数字,然后计数该数字在上一项中出现的次数,最后按照这个顺序写出计数结果。例如,序列的第...
leetcode给单链表加一js实现 LeetCode By JavaScript LeetCode Solutions (All By JavaScript!) 的个人Solutions汇总,全部使用JavaScript完成:grinning_squinting_face: 目的:了解、掌握数据结构和算法,当然...Say:
“count_n_say.py” - 使用迭代方法生成 Count 和 Say 序列的第 n 项。 “count_segments.py” - 该算法计算字符串中的段数,其中段被定义为连续的非空格字符序列。 "count_negatives_2d_array.py" - 给定一个二维...
Practice-Leetcode 这是一个Chinese School Girl:China:用来练习leetcode的文档.每道下面的题都有详细的解题思路,和知识点分析,尽请参考。 找实习的小伙伴也可以参考我的Tech-blog...038.Count and Say 递归 040.C
报数**:这是一个经典的计数问题,称为“Count and Say”。Java实现时,需要用到字符串处理和循环逻辑。 8. **39. 组合总和**:题目要求找出所有可能的组合,使得它们的和等于给定的目标值。Java中,回溯法是一种...
- 计数和说(Count and Say)。 2. **数组**: - 删除数组中的指定元素。 - 寻找数组中和为 K 的子数组。 - 找到最接近目标和的子数组。 - 恢复旋转排序数组。 - 排除自身的产品。 - 分割数组使奇数和偶数...