The count-and-say sequence is the sequence of integers begining as follows:
1,11,21,1211,111221,...
1 is read off as "one 1" or 11
11 is read off as "two one" or 21;
21 is read off as "one 2 , then one 1" or 1211;
Given an integer n, generate the n th sequence
Note :The sequence of integers will be represented as a string
翻译:count-and-say序列是整数开始的序列如下:
1,11,21,1211,111221,...
1读为 "one 1" 或 11
11读为 "two one" 或 21;
21读为 "one 2 , then one 1" 或 1211;
给定一个整数n,n的序列生成
注意:整数序列将被表示为一个字符串
public static String countAndSay2(int n)
{
if(n==1)
{
return "1";
}
String s="1";
StringBuffer sb=new StringBuffer();
//count是出现的次数
int count=0;
//round是迭代的次数
int round=0;
int i;
while (++round<n)
{
count=1;
sb.setLength(0);
for (i = 1; i < s.length(); i++)
{
if(s.charAt(i)==s.charAt(i-1))
{
count++;
}
//有新值出现,记录到sb中
else
{
sb.append(count).append(s.charAt(i-1));
//重置count
count=1;
}
}
sb.append(count).append(s.charAt(i-1));
s=sb.toString();
}
return sb.toString();
}