解决Count and Say

2023-05-16

一、题目:

The count-and-say sequence is the sequence of integers with the first five terms as following:


1.     1
2.     11
3.     21
4.     1211
5.     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 term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:


Input: 1
Output: "1"
  

Example 2:


Input: 4
Output: "1211"  

二、翻译:  

1被读为“一个1”或“11”。
11被读为“2”或21。
21被读为“一个2,一个1”或1211。
给定一个整数n,生成计数的n个项并表示序列。


注意:整数序列中的每个术语都将表示为字符串。
  

三、思路:  

	本题目可以这样来理解,如果输入1,那么就是一个1;输入2的话,那么就是“11”,要注意第一个字符1和第二个字符1就一样,这个时候输出“21”;输入3的话,就是“21”,要注意第一个字符2和第二个字符1不一样,这个时候要先考虑第一个字符2,就先拼接1个2,然后拼接1个1,之后输出即可;照上述的说法可以总结出下边的规律,如果字符str[i]和str[i+1]一样,那么就输出n个s[i],如果不一样,就先拼接1个s[i],然后拼接n个s[i],之后输出即可  

四、JAVA代码:  
class Solution {
    public String countAndSay(int n) {
	//判断n的值是否合理
        if(n<=0) return "";
		//初始化字符串str
        String str = "1";
        
        while(--n>0){
            StringBuilder sb = new StringBuilder();
			//初始化计数器count
            int count = 0;
            char ch = str.charAt(0);
            for(int i = 0,len = str.length();i<len;i++){
			//如果str[i]和str[i+1]相等,计数器加1,如果不等,则对第一个字符统计并且存到StringBuilder里边去
                if(ch==str.charAt(i)){
                    count++;
                }else{
                    sb.append(count).append(ch);
                    ch=str.charAt(i);
                    count=1;
                }
            }
			//对于相等的情况,将统计后的字符存到stringBuilder里边去,对于不等的情况,将剩下的字符串存到StringBuilder里边去
            sb.append(count).append(ch);
			//转换成字符串形式
            str = sb.toString();
        }
		//经过处理后,返回字符串str
        return str;
    }

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决Count and Say 的相关文章

随机推荐

  • LAMP架构简述

    目录 一 LAMP架构简述 二 各组件作用 三 构建LAMP平台 3 1编译安装Apache httpd服务 3 1 1 关闭防火墙 xff0c 将安装Apache所需软件包转到 opt目录下 3 1 2 安装环境依赖包 3 1 3 设置安
  • SLF4J源码分析

    介绍 官网 xff1a http www slf4j org github xff1a https github com qos ch slf4j SLF4J xff08 Simple Logging Facade for Java xff
  • ssh指定密码登陆远程服务器

    1 ssh远程登录 ssh登录远程服务器 xff0c 一般都通过ssh key方式免密码登陆 xff1b 也可以指定用户名 密码来登陆远程服务器 xff1b 如下 xff1a ssh IP l user p port 或者 ssh user
  • U盘制作ubuntu18.04.6系统安装盘

    U盘制作ubuntu18 04 6系统安装盘 1 1 下载镜像文件 ubuntu 18 04 6 desktop amd64 iso 2 下载u盘制作工具rufus3 15 3 运行rufus3 1 制作unbutun18 04启动U盘 3
  • Gradle全版本资源下载

    使用说明 1 xff0c 官网下载地址https services gradle org distributions 不同版本更改版本号即可 xff0c 官网下载不成功的 xff0c 嫌官网下载速度慢的 xff0c 可以直接在这里下载 2
  • .sh文件无法运行--权限问题

    下载了 sh后缀名脚本 结果双击安装文件时是用gedit打开 试着从终端打开 xff0c 提示 xff1a command not found 最后发现原来是文件的打开权限没有钩选 允许以程序执行文件 在图形界面下无法修改权限 xff0c
  • Android 遇坑之路及解决方案

    一 在状态栏之上弹自定义吐司 1 需求 xff1a UI设计师设计的原型图是在状态栏之上的位置弹一个自定义吐司 xff0c 我们的应用内全部都是沉浸式状态栏 xff0c 将状态栏隐藏掉了的 2 解决方案 xff1a 首先给toast设置ma
  • SCRUM框架包括3个角色、3个工件、5个活动、5个价值

    转自http www scrumcn com agile scrum knowledge library scrum html SCRUM 是一个用于开发和维持复杂产品的框架 Scrum 是一个用于开发和维持复杂产品的框架 xff0c 是一
  • rpm安装mysql报libc.so.X(GLIBC_XXX)(64bit) is needed by

    这个原因和linux本身自带的glibc版本不符合安装要求 xff0c 可以对glibc进行升级 解压 xff1a tar xvf glibc XXX tar gz进入glibc 2 14目录 xff1a cd glibc XXXX创建bu
  • rpm安装mysql

    引言 之前安装mysql都是直接使用tar包安装 xff0c 没有用过rpm xff0c 今天搞了一台腾讯云服务器 xff0c 所以想尝试一种新的安装mysql的方式 xff0c 下面分享安装过程和遇到的问题 第一 下载rpm包 官网地址
  • SpringBoot整合多数据源(Druid+Mybaties)

    SpringBoot整合多数据源 xff08 Druid 43 Mybaties xff09 1 添加pom文件 二 改yml 三 业务代码 1 mapper层 xff0c 注意要将不同库的Mapper xml文件分别存放不同的目录 xff
  • 浏览器 中设置断点调试

    1 xff1a 点击F12进入代码调试页面 xff0c 然后点击source xff0c 点击需要设置断点的地方 xff0c F5刷新 2 xff1a F11向下面执行一步 3 xff1a F10向上面执行一步
  • SpringBoot整合Mybaties

    一 引入pom 1 引入jdbc starter xff0c mybatis starter xff0c mysql connector 二 改yml yml的配置如下 xff1a 千万注意那块儿mapper的映射路径的后缀必须是Mappe
  • 国内下载centos的镜像网站大全

    http isoredirect centos org centos 7 isos x86 64 https blog 51cto com 14260602 2441705
  • Shiro实战以及源码解析

    一 明白什么是认证和授权 从百度百科上理解的 xff0c 感觉非常通俗易懂 你要登机 xff0c 你需要出示你的 passport 和源 ticket xff0c passport 是为了证明你张三确实是你百张三 xff0c 这就是 认证
  • 谈谈你对深拷贝和浅拷贝的理解-Java

    一 区别 1 深拷贝中既要拷贝基本数据类型也要拷贝引用类型的数据 xff0c 也就是说拷贝一份完全一样的对象 2 浅拷贝中之拷贝基本数据类型 xff0c 引用类型的数据只是拷贝了原来的引用 xff0c 并没有把引用的数据也拷贝 二 方式 1
  • 谈谈你对依赖注入(DI)和控制反转(IoC)的理解

    学习过Spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念 xff0c 对于初学Spring的人来说 xff0c 总觉得IoC DI这两个概念是模糊不清的 xff0c 是很难理解的 xff0c 今天和大
  • Guava Cache应用以及源码解析

    Guava Cache的学习 https github com google guava 一 Guava的适用性 二 两种缓存的加载 1 第一种CacheLoader方式 xff0c 返回的是LoadingCache对象 xff0c 这个对
  • java邮箱激活

    一 分析 xff1a 1 xff1a 先从前端接收到一个邮箱帐号 xff0c 由于鲁棒性的要求 xff0c 在发送邮箱之前邮箱格式必须正确 xff01 xff01 不然的话第一发送不了 xff0c 第二会发生错误 xff0c 出现异常 所以
  • 解决Count and Say

    一 题目 xff1a The count and say sequence is the sequence of integers with the first five terms as following 1 1 2 11 3 21 4