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.
题目大意为给定一个整数n,按照一定的规则构造(读和说)一个数组,返回这个数组第n个数。这道题目感觉题目比较难以理解,理解了题目后就简单了。就是在上一个数的基础之上,构造下一个数,构造方法可以给这个数分组,比如1211,分成1,2,11,在设置一个计数的变量记录每个数连续出现了多少次,最后全放入字符串中就可以了,代码如下。
public String countAndSay(int n) {
String result="1";
if(n<=1){
//result=1;
return result;
}
for(int i=0;i<n-1;i++){//
result=solve(result);//把每一步的结果当做下一步的输入
}
return result;
}
public String solve(String last){
String result="";
//flag计数
int flag=1,i=0;
for(i=0;i<last.length()-1;i++){
if(last.charAt(i)==last.charAt(i+1)){
flag++;
}else{
result+=flag;
result+=last.charAt(i);
flag=1;
}
}
result+=flag;
result+=last.charAt(i);
return result;
}