Problem:
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.
第一步:记录字符连续重复出现的次数;
第二步:删除重复的字符;
第三步:插入计数。
注意:字符连续重复出现的次数不会超过3,所以插入计数时,只会插入一个字符。
Solution:
public class Solution {
public String countAndSay(int n) {
if(n<=0)
return "";
StringBuilder res = new StringBuilder("1");
while(--n>0)
{
int p = 0,q = 0;
while(p<res.length())
{
while(q<res.length()-1&&res.charAt(q+1)==res.charAt(q))q++;
res.delete(p, q);
res.insert(p, q-p+1);
p += 2;
q = p;
}
}
return res.toString();
}
}
public String countAndSay(int n) {
if(n<=0)
return "";
StringBuilder res = new StringBuilder("1");
while(--n>0)
{
int p = 0,q = 0;
while(p<res.length())
{
while(q<res.length()-1&&res.charAt(q+1)==res.charAt(q))q++;
res.delete(p, q);
res.insert(p, q-p+1);
p += 2;
q = p;
}
}
return res.toString();
}
}
473

被折叠的 条评论
为什么被折叠?



