数并说序列是如下所示的整数序列:
1,11,21,1211,111221,...
1 读为 1个1,即 11。
11 读为 2个1,即 21。
21 读为 1个2 和 1个1,即 1211。
给定一个正整数n,生成第n个序列。
注意:整数序列以字符串表示。
public class Solution {
public String countAndSay(int n) {
if (n <= 0) {
return "";
}
if (n == 1) {
return "1";
}
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder();
s1.append("1");
StringBuilder temp = null;
for (int i = 2; i <= n; i++) {
countAndSay(s1, s2);
temp = s1;
s1 = s2;
s2 = temp;
}
return s1.toString();
}
public void countAndSay(StringBuilder s1, StringBuilder s2) {
s2.setLength(0);
for (int i = 0; i < s1.length(); i++) {
int n = 1;
while (i < s1.length() - 1 && s1.charAt(i + 1) == s1.charAt(i)) {
n++;
i++;
}
s2.append(n + "");
s2.append(s1.charAt(i));
}
}
}