LeetCode 038 Count and Say
2014-08-19 08:52
190 查看
题目
The count-and-say sequence is the sequence of integers beginning as follows:
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
思路
1 根据题目的描述,逻辑思路其实很明确。每次都需要前一次的记录,然后根据这个记录,遍历每个字符,生成这次的记录,作为下次的参考。
2 但是当中怎么处理是很容易出现失误的。如果在计算的时候用int或者long,对于这个题目很容易溢出。所以直接用string来处理是比较好的选择。
3 每次碰到数字字符串处理都要注意溢出的可能。
代码
The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1is read off as
"one 1"or
11.
11is read off as
"two 1s"or
21.
21is 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.
思路
1 根据题目的描述,逻辑思路其实很明确。每次都需要前一次的记录,然后根据这个记录,遍历每个字符,生成这次的记录,作为下次的参考。
2 但是当中怎么处理是很容易出现失误的。如果在计算的时候用int或者long,对于这个题目很容易溢出。所以直接用string来处理是比较好的选择。
3 每次碰到数字字符串处理都要注意溢出的可能。
代码
public class Solution { public String countAndSay(int n) { if(n<=0){ return ""; } if(n==1){ return "1"; } String pre = "1"; for(int i=2;i<=n;i++){ String curnum =""; int num = pre.length(); char curchar = pre.charAt(0); int charnum = 1; for(int j=1;j<num;j++){ if(pre.charAt(j)==curchar){ charnum++; } else{ curnum +=Integer.toString(charnum)+curchar; curchar = pre.charAt(j); charnum=1; } } curnum +=Integer.toString(charnum)+curchar; pre = curnum; } return pre; } }
相关文章推荐
- leetcode 038 Count and Say
- 【LeetCode-面试算法经典-Java实现】【038-Count and Say(计数和表述)】
- [LeetCode]题解(python):038-Count and Say
- leetcode解题方案--038--count and say
- LeetCode 038-Count and Say
- Java for LeetCode 038 Count and Say
- leetcode_c++:Count and Say(038)
- LeetCode 038 Count and Say
- leetcode之路038 Count and Say
- [LeetCode]038-Count And Say
- LeetCode 038 Count and Say
- leetcode 038 —— Count and Say
- leetcode 038 Count and Say
- LeetCode038 Count and Say
- leetcode 038 Count and Say
- LeetCode: Count and Say [037]
- leetcode[38]Count and Say
- Count and Say --leetcode
- Leetcode (3) Count and Say
- 【LeetCode】Count and Say