The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1 2. 11 3. 21 4. 1211 5. 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 term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
我的代码:
if (n < 1) return "";
if (n == 1) return "1";
String s = countAndSay(n - 1);
if (s.length() <= 1) return "1" + s;
StringBuffer sb = new StringBuffer();
int num = 1;
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) == s.charAt(i - 1)) {
num++;
} else {
sb.append(num);
sb.append(s.charAt(i - 1));
num = 1;
}
if (i == s.length() - 1) {
sb.append(num);
sb.append(s.charAt(i));
}
}
return sb.toString();