题目
地址:https://leetcode-cn.com/problems/count-and-say/
描述:The count-and-say sequence is a sequence of digit strings defined by the recursive formula:
countAndSay(1) = “1”
countAndSay(n) is the way you would “say” the digit string from countAndSay(n-1), which is then converted into a different digit string.
To determine how you “say” a digit string, split it into the minimal number of groups so that each group is a contiguous section all of the same character. Then for each group, say the number of characters, then say the character. To convert the saying into a digit string, replace the counts with a number and concatenate every saying.
代码
class Solution {
public String countAndSay(int n) {
if (n == 1) {
return "1";
}
StringBuilder sb = new StringBuilder(n * 2);
sb.append("1");
for (int i = 2; i <= n; i++) {
countAndSay1(sb.toString(), sb.delete(0, sb.length()));
}
return sb.toString();
}
private void countAndSay1(String n, StringBuilder sb) {
char pre = n.charAt(0);
int count = 1;
for (int i = 1; i < n.length(); i++) {
char cur = n.charAt(i);
if (cur != pre) {
sb.append(count).append(pre);
pre = cur;
count = 1;
} else {
count++;
}
}
sb.append(count).append(pre);
}
}