代码拉取完成,页面将自动刷新
分析: 水题,我们只需要模拟流程即可,这个流程也很简单,每次直接从前往后枚举即可,枚举的每个小间断寻找一个元素,知道元素内容和个数之后添加到新串后面即可。
对于实现的代码,别用String就行,这里先用了StringBuilder:
public String countAndSay(int n) {
if(n==1)return "1";
StringBuilder sBuilder=new StringBuilder("1");
while (--n>0) {
StringBuilder s2=new StringBuilder();
int index=1;
int i=0;
for(i=0;i<sBuilder.length()-1;i++)
{
if(sBuilder.charAt(i)==sBuilder.charAt(i+1))
index++;
else {
s2.append(index).append(sBuilder.charAt(i));
index=1;
}
}
s2.append(index).append(sBuilder.charAt(i));
//System.out.println(sBuilder.toString()+" "+i);
sBuilder=s2;
}
return sBuilder.toString();
}
效果的话一般般3ms 使用数组存储直接操作会更快一些:
public String countAndSay(int n) {
if(n==1)return "1";
int a[]=new int[5000];
a[0]=1;
int b[]=new int[5000];
int len=1;
int index=0;
while (--n>0) {
int num=1;
int i=0;
for(i=0;i<len-1;i++)
{
if(a[i]==a[i+1])
num++;
else {
b[index++]=num;
b[index++]=a[i];
num=1;
}
}
b[index++]=num;
b[index++]=a[i];
//交换
int team[]=a;
a=b;
b=team;
len=index;
index=0;
}
StringBuilder sBuilder=new StringBuilder("");
for(int j=0;j<len;j++)
{
sBuilder.append(a[j]);
}
return sBuilder.toString();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。