您的位置:首页 > 职场人生

LeetCode 038 Count and Say

2014-08-19 08:52 190 查看
题目

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.

思路

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 面试笔试