Leetcode之-题38

题目

Count and Say

The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, … 1 is read off as “one 1” or 11. 11 is read off as “two 1s” or 21. 21 is read off as “one 2, then one 1” or 1211. Given an integer n, generate the nth sequence.

题解

Java实现 类似于斐波拉契数列的生成,由前一个生成后一个,我的解法也是这个,下面附上AC代码

public String countAndSay(int n) {
        if(n == 0 || n == 1){
            return "1";
        }
        String res = "11"; //第一个答案
        for(int i = 2; i < n; ++i){
            res = getNextSay(res);
        }
        return res;

    }

    /**
    * 根据上一个答案获得下一个需要输出的Say
    */
    private String getNextSay(String res) {
        StringBuilder sb = new StringBuilder(); //返回答案
        int num = 1; //倍数
        char formerChar = res.charAt(0);
        for(int i = 1; i < res.length(); ++i){
            if(res.charAt(i) == formerChar){
                //下一个字符与上一个相同
                //倍数加一
                num++;
                continue;
            }else{
                //下一个字符与上一个字符不同
                //输出倍数个formerChar
                sb.append(Integer.toString(num) + formerChar);
                //更新
                formerChar = res.charAt(i);
                num = 1;
            }

        }
        sb.append(Integer.toString(num) + formerChar);
        return sb.toString();
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java 泛型详解

泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类...

791
来自专栏大神带我来搬砖

程序员的职业素养真是完全靠不住的东西

这里面<T extends Comparable<? super T>>有什么用?

311
来自专栏技术/开源

.net源码分析 – List<T>

通过分析源码可以更好理解List<T>的工作方式,帮助我们写出更稳定的代码。 List<T>源码地址: https://github.com/dotnet/c...

2028
来自专栏IT开发技术与工作效率

Java经典编程50题(面试笔试机试)

https://blog.csdn.net/alias_fa/article/details/52985112

18423
来自专栏芋道源码1024

数据库中间件 Sharding-JDBC 源码分析 —— 结果归并

本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. MergeEngine 2.2.1 AbstractStreamResultSe...

3308
来自专栏阿杜的世界

Java泛型基础(一)目的泛型类总结

利用Java开发的时候,肯定会有一个类持有另一个或几个类的情况,在编写一些比较基础的组件,例如缓存操作组件,这类组件的逻辑差不多,但是希望能够处理不同的类型。

371
来自专栏恰同学骚年

C#基础与常用数据结构学习笔记

  接口相当于没有方法实现的抽象类,接口方法不要加各种访问级别:例如public,private等。

803
来自专栏java工会

Java 泛型详解

1495
来自专栏IT开发技术与工作效率

Java 8 函数式编程Java 8 函数式编程

java.util.function.* @FunctionalInterface 都是函数接口,没有成员(状态)

1023
来自专栏于晓飞的专栏

Java Integer 类 解读

Integer 类是Java中最常用的类型,它是原生类型 int 的包装类。在开发中我们基本可以将两者等价。但是,最近在开发中遇到一个 == 与 equals ...

883

扫码关注云+社区