LeetCode 38題:外觀數列

題目

給定一個正整數?n?,輸出外觀數列的第?n?項。

「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。

你可以將其視作是由遞歸公式定義的數字字符串序列:

  • countAndSay(1) = "1"
  • countAndSay(n)?是對?countAndSay(n-1)?的描述,然后轉換成另一個數字字符串。

前五項如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
第一項是數字 1 
描述前一項,這個數是 1 即 “ 一 個 1 ”,記作 "11"
描述前一項,這個數是 11 即 “ 二 個 1 ” ,記作 "21"
描述前一項,這個數是 21 即 “ 一 個 2 + 一 個 1 ” ,記作 "1211"
描述前一項,這個數是 1211 即 “ 一 個 1 + 一 個 2 + 二 個 1 ” ,記作 "111221"

要?描述?一個數字字符串,首先要將字符串分割為?最小?數量的組,每個組都由連續的最多?相同字符?組成。然后對于每個組,先描述字符的數量,然后描述字符,形成一個描述組。要將描述轉換為數字字符串,先將每組中的字符數量用數字替換,再將所有描述組連接起來。

例如,數字字符串?"3322251"?的描述如下圖:

示例 1:

輸入:n = 1
輸出:"1"
解釋:這是一個基本樣例。

示例 2:

輸入:n = 4
輸出:"1211"
解釋:
countAndSay(1) = "1"
countAndSay(2) = 讀 "1" = 一 個 1 = "11"
countAndSay(3) = 讀 "11" = 二 個 1 = "21"
countAndSay(4) = 讀 "21" = 一 個 2 + 一 個 1 = "12" + "11" = "1211"

提示:?

  • 1 <= n <= 30

代碼?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>char * countAndSay(int n);int main()
{printf("%s",countAndSay(1));return 0;
}char * countAndSay(int n)
{int data=10;char*res="1";   char*temp=(char*)malloc(sizeof(char)*data);memset(temp,0,sizeof(temp));for(int ni=1;ni<n;ni++){int reslen=strlen(res);//遍歷的長度int j=0;while(j<reslen)//保證遍歷完全{int p=j;//上一次for循環結束的位置for(;res[p]==res[j]&&p<reslen;p++);//p是最后相同位的下一位int temp_len=strlen(temp);temp[temp_len]=p-j+48;//個數temp[temp_len+1]=res[j];//對應數字字符j=p;//j要更新}res=temp;if(strlen(temp)*2>=data){data=data*2;}temp=(char*)malloc(sizeof(char)*data);memset(temp,0,sizeof(char)*data);//不可寫成memset(temp,0,sizeof(temp));}return res;
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42408.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux后門大全-inetd后門(一)

環境 靶機&#xff1a;Ubuntu 16.04.7 LTS &#xff08;最好使用相同的版本或更老的版本&#xff0c;inetd是非常老的系統服務管理工具&#xff09; 192.17.0.4 攻擊機&#xff1a; 安裝inetd apt update apt-get install openbsd-inetd #檢查是否安裝成功,如果文件存在就安…

【使用群暉遠程鏈接drive掛載電腦硬盤】

文章目錄 前言1.群暉Synology Drive套件的安裝1.1 安裝Synology Drive套件1.2 設置Synology Drive套件1.3 局域網內電腦測試和使用 2.使用cpolar遠程訪問內網Synology Drive2.1 Cpolar云端設置2.2 Cpolar本地設置2.3 測試和使用 3. 結語 前言 群暉作為專業的數據存儲中心&…

《TCP IP網絡編程》第十六章

第 16 章 關于 I/O 流分離的其他內容 16.1 分離 I/O 流 「分離 I/O 流」是一種常用表達。有 I/O 工具可區分二者&#xff0c;無論采用哪種方法&#xff0c;都可以認為是分離了 I/O 流。 2次 I/O 流分離&#xff1a; 第一種是第 10 章的「TCP I/O 過程」分離。通 shutdown(soc…

C++STL——deque容器詳解

縱有疾風起&#xff0c;人生不言棄。本文篇幅較長&#xff0c;如有錯誤請不吝賜教&#xff0c;感謝支持。 &#x1f4ac;文章目錄 一.deque容器的基本概念二.deque容器常用操作①deque構造函數②deque元素操作③deque賦值操作④deque交換操作⑤deque大小操作⑥deque插入和刪除…

el-form組件相關的一些基礎使用

el-checkbox 01.description 多選單選框 02.場景舉例 需要對每一條數據展示她的某些狀態是否存在 03.代碼展示 <el-checkbox v-model"query.isAutoAccptncsign" true-label1 false-label0 :disabled"ifReview?true:false">自動發起承兌應答</…

直方圖均衡化和自適應直方圖均衡化

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 均衡化是數字圖像處理中常用的一種技術&#xff0c;用于增強圖像的視覺效果和對比度。&#xff0c;今天我們將實現對同一張圖像的直方圖均衡化和自適應直方圖均衡化處理&#xff0c;學習一下兩者的的基本原理和實現過程&a…

MFC中的窗體繪制事件函數:OnCtlColor、OnPaint、OnNcPaint、OnDrawItem、OnEraseBkgnd、OnDraw

文章目錄 CWnd::OnCtlColorCWnd::OnPaintCWnd::OnNcPaintCWnd::OnDrawItemCWnd::OnEraseBkgndCWnd::InvalidateRectCView::OnDraw 參考&#xff1a;https://learn.microsoft.com/ CWnd::OnCtlColor 即將繪制子控件時&#xff0c;框架會調用此成員函數。 afx_msg HBRUSH OnCt…

React 高階組件(HOC)

React 高階組件(HOC) 高階組件不是 React API 的一部分&#xff0c;而是一種用來復用組件邏輯而衍生出來的一種技術。 什么是高階組件 高階組件就是一個函數&#xff0c;且該函數接受一個組件作為參數&#xff0c;并返回一個新的組件。基本上&#xff0c;這是從 React 的組成…

Mongodb 更新集合的方法到底有幾種 (中) ?

更新方法 Mongodb 使用以下幾種方法來更新文檔 &#xff0c; Mongodb V5.0 使用 mongosh 客戶端&#xff1a; db.collection.updateOne(<filter>, <update>, <options>) db.collection.updateMany(<filter>, <update>, <options>) db.c…

docker 安裝elasticsearch、kibana

下載es鏡像 docker pull elasticsearch 啟動es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 驗證es界面訪問 ?????http://節點ip:9200/ ?…

client-go實戰之十二:選主(leader-election)

歡迎訪問我的GitHub 這里分類和匯總了欣宸的全部原創(含配套源碼)&#xff1a;https://github.com/zq2599/blog_demos 本篇概覽 本文是《client-go實戰》系列的第十二篇&#xff0c;又有一個精彩的知識點在本章呈現&#xff1a;選主(leader-election)在解釋什么是選主之前&…

【自用】云服務器 docker 環境下 HomeAssistant 安裝 HACS 教程

一、進入 docker 中的 HomeAssistant 1.查找 HomeAssistant 的 CONTAINER ID 連接上云服務器&#xff08;宿主機&#xff09;后&#xff0c;終端內進入 root &#xff0c;輸入&#xff1a; docker ps找到了 docker 的 container ID 2.config HomeAssistant 輸入下面的命令&…

修改el-table行懸停狀態的背景顏色

.content:deep().el-table tr:hover>td {background-color: #f5f5f5 !important; /* 設置懸停時的背景顏色 */ }/*這一點很重要&#xff0c;否則可能會導致hover行時操作列還是原來的背景色*/ .content:deep().el-table__body tr.hover-row>td{background-color: #f5f5f5…

使用Nacos配置中心動態管理Spring Boot應用配置

&#x1f337;&#x1f341; 博主貓頭虎 帶您 Go to New World.?&#x1f341; &#x1f984; 博客首頁——貓頭虎的博客&#x1f390; &#x1f433;《面試題大全專欄》 文章圖文并茂&#x1f995;生動形象&#x1f996;簡單易學&#xff01;歡迎大家來踩踩~&#x1f33a; &a…

Linux權限系列--給普通用戶添加某個命令的sudo權限

原文網址&#xff1a;Linux權限系列--給普通用戶添加某個命令的sudo權限_IT利刃出鞘的博客-CSDN博客 簡介 說明 本文介紹Linux系統如何給普通用戶添加某個命令的sudo權限。 使用場景 普通開發者可能需要sudo的命令&#xff1a; apt-get&#xff08;經常要安裝軟件&#x…

【Vue2】---->VueX 3 核心概念

官網&#xff1a; Vuex 是什么&#xff1f; | Vuex (vuejs.org) 目錄 介紹 1、安裝 2、新建 store/index.js 專門存放 vuex 3、 在 main.js 中導入掛載到 Vue 實例上 核心概念 1、核心概念 -state 狀態 1、訪問Vuex中的數據 2、通過$store訪問的語法 3、通過輔助函…

Java IO流(一)IO基礎

概述 IO流本質 I/O表示Input/Output,即數據傳輸過程中的輸入/輸出,并且輸入和輸出都是相對于內存來講Java IO(輸入/輸出)流是Java用于處理數據讀取和寫入的關鍵組件常見的I|O介質包括 文件(輸入|輸出)網絡(輸入|輸出)鍵盤(輸出)顯示器(輸出)使用場景 文件拷貝&#xff08;File&…

Python自帶的IDLE有什么用

在Python的官方解釋器中&#xff0c;自帶了一個名為IDLE(Interactive DeveLopment Environment)的集成開發環境。 一、簡化代碼調試過程 很多初學者在編寫Python代碼時&#xff0c;經常會遇到一些問題需要調試。而在IDLE中&#xff0c;我們可以通過設置斷點、單步調試等方法&…

算法競賽入門【碼蹄集新手村600題】(MT1160-1180)C語言

算法競賽入門【碼蹄集新手村600題】(MT1160-1180&#xff09;C語言 目錄MT1161 N的零MT1162 數組最大公約數MT1163 孿生質數MT1164 最大數字MT1165 卡羅爾數MT1166 自守數MT1167自守數IIMT1168 階乘數MT1169 平衡數MT1170 四葉玫瑰數MT1171 幻數MT1172 完美數字MT1173 魔數MT11…

es線上處理命令記錄

常用命令 搜索 GET _search {"query": {"match_all": {}} }獲取全部模版 GET _index_template GET _index_template/yst_crawler_template獲取全部索引 GET /_cat/indices?v 獲取當前mapping GET /yst_crawler/_mapping創建一個mapping PUT /yst_c…