原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnpvdm/
解法一:
public String countAndSay(int n) {
if (n == 1) {
return "1";
}
String tmpStr = countAndSay(n-1);
char tmpChar = tmpStr.charAt(0);
int count = 0;
StringBuilder result = new StringBuilder();
for (int i = 0 ; i < tmpStr.length(); i++) {
if (tmpChar == tmpStr.charAt(i)) {
count++;
} else {
result.append(count);
result.append(tmpChar);
count = 1;
tmpChar = tmpStr.charAt(i);
}
}
result.append(count);
result.append(tmpChar);
return result.toString();
}
思路:递归实现,首先定义递归的出口,即n==1的时候,然后上一次返回的值,作为一个运算参数再次进行运算,从递归的出口我们得知第一个参与运算的参数为“1”,然后一次次迭代,根据题目的描述我们能够得知,需要记录字符串中每一个字符出现的次数,然后拼接次数和次数出现的值,然后每一个值都这样循环,在遍历最后一个值的时候我们最后结果拼接的值是倒数第二个值,所以在循环外我们需要拼接最后一个值。