zoukankan      html  css  js  c++  java
  • 38. Count and Say

    一、题目

      1、审题

      

      2、分析

        ①当 n = 1, 输出 1,

        ② n = 2, ①读作 1个1,输出 11

        ③ n = 3, ②读作2个1,输出 21

        ④ n = 4, ③读作1个2,1个1,输出 1211

        ⑤ n = 5, ④读作1个1,1个2,2个1,输出 111221

        ...

    二、解答

      1、思路:

          ①当 n = 1,时,返回 字符串 1;

          ②当 n > 1 时,调用循环计算出每一次上一步所返回的字符串,记作 sumStr;

          ③ 将sumStr依次截取最后一个字符,并记录连续相同字符的个数,最终逆序拼接起来即为所要求的字符串。

    class Solution {
        public String countAndSay(int n) {
    
            if(n ==1)
                return "1";
    
            String numString = "1";
            for(int i = 2; i <= n; i++) {
                numString = readNum(numString);
            }
    
            return numString;
        }
    
        public  String readNum(String numString) {
    
            StringBuffer sb = new StringBuffer("");
    
            ArrayList<Integer> list = new ArrayList<Integer>();
            int count = 0;
            while(!numString.equals("")) {
                int len = numString.length();
                int tmp = numString.charAt(len - 1) - '0';
    
                numString = numString.substring(0,len - 1);
    
                list.add(tmp);
            }
    
            while(!list.isEmpty()) {
                int target = list.remove(0);
                int target_num = 1;
                while(!list.isEmpty() && list.get(0) == target) {
                    target_num++;
                    list.remove(0);
                }
    
                sb.insert(0, target_num*10 + target);;
            }
    
            return sb.toString();
        }
    }
  • 相关阅读:
    String API
    正则表达式语法
    正则表达式定义与创建
    jQuery——子元素筛选器
    基本筛选器
    内置对象和包装类型
    栈和队列
    web前端css实现六边形效果
    jquery选择器
    AE导出mov
  • 原文地址:https://www.cnblogs.com/skillking/p/9580487.html
Copyright © 2011-2022 走看看