每日一题-字符串 leetcode38

153 阅读1分钟

一、题目描述

二、题目思路

  1. 对于数列,给出了前五项,需要用到递归
  2. 对于需要用到前一项的数项,可以定义字符串pre接收
  3. 如果判断相等则计数器累加,不相等了则将之前相等的成果存在结果中
  4. while()判断的作用在于可以将倒数两位的情况加到结果中
  5. 每次将成果存到结果后,注意要将计数器count重置

三、提交代码

class Solution {
    public String countAndSay(int n) {
        if(n == 1){
            return "1";
        }
        int count =1;
        int i=0;
        String pre = countAndSay(n-1);
        StringBuilder sb = new StringBuilder();
        while(i <pre.length()){
            if(i<pre.length()-1 &&(pre.charAt(i) == pre.charAt(i+1))){
                count++;
            }else{
                sb.append(count);
                sb.append(pre.charAt(i));
                count =1;
            }
            i++;
        }
        return sb.toString();
    }
}