您的位置:首页 > 其它

LeetCode 38 Count and Say

2015-10-04 15:25 459 查看
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.
解题思路:这道题就是一道字符串处理的问题,题意就是把上一个字符串的读数作为下一个字符串,然后依次类推。理解题意之后比较容易,但要注意结尾的地方,要增加判断前一个是重复的结尾,还是非重复的结尾。
代码如下:

public String countAndSay(int n) {
if(n==1){
return "1";
}
if(n==2){
return "11";
}
String s = String.valueOf(11);
for (int i = 3; i <= n; i++) {
int index=0;
int count =1;
String s1 = new String();
int len = s.length();
int type =0;
while(index<len-1){
char c = s.charAt(index);
if(c==s.charAt(index+1)){
count++;
type=1;
}else{
s1+=count;
s1+=c;
count=1;
type=0;
}
index++;
if(index>=len-1){
if(type==1){
s1+=count;
s1+=c;
}else{
s1+=1;
s1+=s.charAt(index);
}
s=s1;
break;
}
}
}
return s;
}


这里提空一个更加优雅的解法,直接从1开始,比我的泛化能力更强。
http://blog.csdn.net/linhuanmars/article/details/20679963
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: