您的位置:首页 > 产品设计 > UI/UE

LeetCode之count-and-say sequence

2016-07-22 14:56 489 查看
问题描述:

/**
* 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,第1个数就是1个1,即11,第2个数就是2个1,即21,第3个数是1个2,1个1,即1211.第4个数是1个1,1个2,2个1,即111221。每次后面的数都是对前面一个数的“数”和“说”。现在让你求第n个数是什么?

代码如下:

public static String countAndSay(int n) {
StringBuilder s1=new StringBuilder("1");
StringBuilder s2=new StringBuilder("");
for(int i=0;i<n;i++)
{
int j=0;
int len=s1.length();
while(j<len)
{
int count=1;
char c= s1.charAt(j);//获取前面数的每一位
while(j<len-1&&s1.charAt(j)==s1.charAt(j+1))//统计相同的位数
{
count++;
j++;
}
s2.append(count+"");//有几个相同的位,则在结果中追加其个数count
s2.append(c);//再追加这个重复的数字
if(j==len-1)
{
break;
}
j++;
}
s1=s2;
s2=new StringBuilder();
}
return s1.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: