java 題解LeetCode38外觀數(shù)列示例
LeetCode 38. 外觀數(shù)列(難度:簡(jiǎn)單)
題目鏈接:https://leetcode-cn.com/problems/count-and-say/
問(wèn)題描述:
給定一個(gè)正整數(shù) n(1 ≤ n ≤ 30),輸出外觀數(shù)列的第 n 項(xiàng)。
注意:整數(shù)序列中的每一項(xiàng)將表示為一個(gè)字符串。
「外觀數(shù)列」是一個(gè)整數(shù)序列,從數(shù)字 1 開(kāi)始,序列中的每一項(xiàng)都是對(duì)前一項(xiàng)的描述。前五項(xiàng)如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
第一項(xiàng)是數(shù)字 1
描述前一項(xiàng),這個(gè)數(shù)是 1 即 “一個(gè) 1 ”,記作 11
描述前一項(xiàng),這個(gè)數(shù)是 11 即 “兩個(gè) 1 ” ,記作 21
描述前一項(xiàng),這個(gè)數(shù)是 21 即 “一個(gè) 2 一個(gè) 1 ” ,記作 1211
描述前一項(xiàng),這個(gè)數(shù)是 1211 即 “一個(gè) 1 一個(gè) 2 兩個(gè) 1 ” ,記作 111221
示例 1:
輸入: 1
輸出: "1"
解釋:這是一個(gè)基本樣例。
示例 2:
輸入: 4
輸出: "1211"
解釋:當(dāng) n = 3 時(shí),序列是 "21",其中我們有 "2" 和 "1" 兩組,"2" 可以讀作 "12",也就是出現(xiàn)頻次 = 1 而 值 = 2;類似 "1" 可以讀作 "11"。所以答案是 "12" 和 "11" 組合在一起,也就是 "1211"。
解法一:暴力法
按照題目思路,一輪一輪遍歷字符串,得到最后結(jié)果。

class Solution {
public String countAndSay(int n) {
String num = "1";
String result = "1";
char a = 'a';
int flag = 0;
for(int i = 1;i<n;i++) {
result = "";
a = 'a';
flag = 0;
while(true) {
if(num.length() == 0) {
result = result + flag + a;
num = result;
break;
}
char c = num.charAt(0);
if(a == c) {
flag++;
}else {
if(a != 'a') {
result = result + flag + a;
}
a = c;
flag = 1;
}
num = num.substring(1);
}
}
return result;
}
}解法二:遞歸法
利用遞歸的特性,依次計(jì)算出最終的結(jié)果
class Solution {
public String countAndSay(int n) {
if(n == 1) {
return "1";
}
StringBuilder result = new StringBuilder();
String s = countAndSay(n-1);
int len = s.length();
int a = 0;
for(int i = 1;i<len +1;i++) {
if(i == len) {
return result.append(i-a).append(s.charAt(a)).toString();
}else if (s.charAt(i)!=s.charAt(a)) {
result.append(i-a).append(s.charAt(a));
a = i;
}
}
return result.toString();
}
}
以上就是java外觀數(shù)列的詳細(xì)內(nèi)容,更多關(guān)于java外觀數(shù)列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java Iterator.remove()實(shí)例方法分析
在本篇文章里小編給大家整理了一篇關(guān)于java Iterator.remove()實(shí)例方法分析,有興趣的朋友們跟著學(xué)習(xí)下。2021-01-01
springboot的yml配置文件通過(guò)db2的方式整合mysql的教程
這篇文章主要介紹了springboot的yml配置文件通過(guò)db2的方式整合mysql的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java?Kryo,Protostuff,Hessian序列化方式對(duì)比
這篇文章主要介紹了Java?Kryo,Protostuff,Hessian序列化方式對(duì)比,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
Java中類轉(zhuǎn)json的基類實(shí)現(xiàn)
這篇文章主要介紹了Java中類轉(zhuǎn)json的基類實(shí)現(xiàn),需要的朋友可以參考下2021-01-01
SpringBoot實(shí)現(xiàn)返回值數(shù)據(jù)脫敏的步驟詳解
這篇文章主要給大家介紹一下SpringBoot實(shí)現(xiàn)返回值數(shù)據(jù)脫敏的步驟,文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-07-07
Java使用Spire.Doc for Java實(shí)現(xiàn)Word自動(dòng)化插入圖片
在日常工作中,Word文檔是不可或缺的工具,而圖片作為信息傳達(dá)的重要載體,其在文檔中的插入與布局顯得尤為關(guān)鍵,下面我們就來(lái)看看如何使用Spire.Doc for Java實(shí)現(xiàn)Word文檔自動(dòng)化插入圖片吧2025-12-12
Java?面向?qū)ο笸ㄟ^(guò)new揭開(kāi)對(duì)象實(shí)例化
各位鐵汁們大家好呀,我們上次博客講了,通過(guò)?Student?student1?=?new?Student();就可以實(shí)例化一個(gè)對(duì)象,這個(gè)對(duì)象就有Student類中的所以成員變量??墒?對(duì)象student1?和?類Student到底是怎樣建立聯(lián)系的,在內(nèi)存中到底發(fā)生了什么2022-04-04
Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析
這篇文章主要介紹了Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

