力扣练习之外观数列

我爱海鲸 2022-08-12 19:33:44 初级算法

简介初级算法、字符串

原题出处: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”,然后一次次迭代,根据题目的描述我们能够得知,需要记录字符串中每一个字符出现的次数,然后拼接次数和次数出现的值,然后每一个值都这样循环,在遍历最后一个值的时候我们最后结果拼接的值是倒数第二个值,所以在循环外我们需要拼接最后一个值。

你好:我的2025