当前位置: 首页 > news >正文

报数count-and-say

文章目录

  • 报数count-and-say
    • 思考
    • 代码

报数count-and-say

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2", "one 1""一个二" , "一个一") , 即 1211

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

思考

题目的意思是说
这题真的是有些奇葩,或者是我奇葩,根本没看懂,看了好几个评论才看懂~

1
2 描述的是1,是一个1,也就是11
3 描述的是11,是两个1,也就是21
4 描述的是21,是一个2一个1,也就是12-11
5 描述的是1211, 是一个1,一个2,两个1,也就是11-12-21
6 描述的是111221,是三个1,两个2,一个1,也就是31-22-11
7 描述的是312211,是一个3一个1两个2两个1,也即是13-11-22-21
以此类推

代码

class Solution {
    public String countAndSay(int n) {
        if (n <= 0) {
            return "";
        }
        String[] seq = new String[n];
        seq[0] = "1";
        for (int i = 1; i < n; i++) {
            seq[i] = convert(seq[i - 1]);
        }
        return seq[n - 1];
    }

    public String convert(String str) {
        StringBuilder ans = new StringBuilder();
        int count = 1;
        for (int i = 0; i < str.length(); i++) {
            // 这一部分是"count", 记录连续出现x个y
            if (i < str.length() - 1 && str.charAt(i) == str.charAt(i + 1)) {
                count++;
            } else {
            // 这一部分是"say",将上面"count"的结果"xy"作为下一个数的一部分(若上面记录到2个1,就拼接"21")
                ans.append(count).append(str.charAt(i));
                count = 1;
            }
        }
        return new String(ans);
    }
}

参考资料

相关文章:

  • 递归需要遵守的重要规则
  • 组合总和(combination-sum)
  • 组合总和combination-sum
  • 如何查看隐藏的密码(限chrome浏览器)
  • 最大子序和(maximum-subarray)——动态规划和贪心双解法
  • Deepin系统安装SSH服务
  • Deepin Gif转mp4
  • 零钱兑换(coin-change) 动态规划问题
  • 批量识别图版中的文字信息之百度AI文字识别
  • 操作系统 术语表
  • GoldenDict 调用百度翻译(多段文本)
  • Hexo常用命令
  • 最小路径和(minimum-path-sum)
  • Leetcode.4.寻找两个有序数组的中位数(problems/median-of-two-sorted-arrays)
  • python调试PDB工具命令
  • php的引用
  • 网络传输文件的问题
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Android交互
  • Laravel Telescope:优雅的应用调试工具
  • MySQL-事务管理(基础)
  • Python socket服务器端、客户端传送信息
  • python大佬养成计划----difflib模块
  • React-生命周期杂记
  • React组件设计模式(一)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 新书推荐|Windows黑客编程技术详解
  • 源码安装memcached和php memcache扩展
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​用户画像从0到100的构建思路
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • ( 10 )MySQL中的外键
  • (07)Hive——窗口函数详解
  • (a /b)*c的值
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Java)【深基9.例1】选举学生会
  • (ros//EnvironmentVariables)ros环境变量
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计ssm电影分享网站
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET单元测试
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .net网站发布-允许更新此预编译站点
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @javax.ws.rs Webservice注解
  • @Pointcut 使用