博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
38. Count and Say
阅读量:6068 次
发布时间:2019-06-20

本文共 1364 字,大约阅读时间需要 4 分钟。

一、题目

  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
list = new ArrayList
(); 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(); }}

 

转载于:https://www.cnblogs.com/skillking/p/9580487.html

你可能感兴趣的文章
Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
查看>>
adb shell am 的用法
查看>>
codeforces 85D D. Sum of Medians Vector的妙用
查看>>
Android进程的内存管理分析
查看>>
php -- 反射ReflectionClass
查看>>
Nginx反向代理和负载均衡部署指南
查看>>
java获取当前日期时间代码总结
查看>>
互联网广告学——程序化购买
查看>>
新版本chrome浏览器控制台怎么设置成独立的窗口
查看>>
oracle中nvarchar2字符集不匹配
查看>>
Mysql5.6.22源代码安装
查看>>
每天一个linux命令(5):rm 命令
查看>>
mksquash_lzma-3.2 编译问题
查看>>
【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
查看>>
PHP JAVA Bridge桥的最新使用
查看>>
免费工具
查看>>
锋利的JQuery —— DOM操作
查看>>
Swift应用开源项目推荐
查看>>
BZOJ1845 : [Cqoi2005] 三角形面积并
查看>>
机器语言——码运算(具体解释反码补码由来)
查看>>