書籍數字字符串轉換為字母組合的種數(4)0607

題目:

給定一個字符串str,str全部由數字字符組成,如果str中某一個或某相鄰兩個字符組成的子串值在1~26之間,則這個子串可以轉換為一個字母。規定“1”轉換為“A”,“2”轉換為“B”,“3”轉換成“C”……“26”轉換為“Z”。寫一個函數,求str有多少種不同的轉換結果,并返回種數。

舉例:

str=“1111”

能轉換出的結果有“AAAA”,“LAA”,“ALA”,"AAL"和“LL”,返回5。

暴力遞歸先定義遞歸函數p(i)(0<=i<=N)。p(i)的含義是str[0..i-1]已經轉換完畢,而str[i..N-1]還沒轉換的情況下,最終合法的轉換種數有多少并返回。特別指出,p(N)表示str[0..N-1](也就是str的整體)都已經轉換完,沒有后序的字符了,那么合法的轉換種數為1,即p(N)=1。比如,str=“111123”,p(4)表示str[0..3](即“1111”)已經轉換完畢,具體結果是什么不重要,反正已經轉換完畢并且不可以變,沒轉換的部分是str[4..5](即“23”),可轉換的為“BC”或“W”只有兩種,所以p(4)=2。p(6)表示str整體已經轉換完畢,所以p(6)=1。那么p(i)如何計算呢?只有以下4中情況。
1、如果i==N,根據上文對P(N)=1的解釋,直接返回1.

2、如果不滿足情況1,又有srt[i]==‘0’,str[0..i-1]已經轉換完畢,而str[i..N-1]此時又以‘0’開頭,str[i..N-1]無論怎樣都不可能合法轉換,所以直接返回0。

3、如果不滿足情況1和情況2,說明str[i]屬于“1~9”,str[i]可以轉化為"A"-“I”,那么p(i)的值一定包含p(i+1)的值,即p(i) = p(i+1)。

4、如果不滿足情況1和情況2,說明str[i]屬于‘1’-‘9’,如果又有str[i..i+1]在“10”~“26”之間,str[i..i+1]可以轉換為‘J’-‘Z’,那么p(i)的值一定也包含p(i+2)的值,即p(i)+=p(i+2).

public int num1(String str){if(str == null || str.equals("")){return 0;}char[] chs = str.toCharArray();return process(chs,0);
}public int process(char[] chs,int i){if(i == chs.length){return 1;}if(chs[i] == '0'){return 0;}int res = process(chs,i+1);if(i+1 < chs.length && (chs[i] - '0') * 10 + chs[i+1] -'0' < 27){res += process(chs,i+2);}return res;
}

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

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

相關文章

Kafka的分區副本機制

目錄 生產者的分區寫入策略 輪詢策略 隨機策略 按key分配策略 亂序分區 自定義分區策略 實現步驟&#xff1a; 消費者組Rebalance機制 Rebalance觸發時機 Rebalance的不良影響 消費者分區分配策略 Range范圍分配策略 RoundRobin輪詢策略 Stricky粘性分配策略 生產…

計算機網絡-NAT配置與ACL

目錄 一、ACL 1、ACL概述 2、ACL的作用 3、ACL的分類 4、ACL的配置格式 二、NAT 1、NAT概述 2、NAT分類 2.1 、 靜態NAT 2.2 、 動態NAT 3、NAT的功能 4、NAT的工作原理 三、NAT配置 1、靜態NAT配置 2、動態NAT配置 四、總結 一、ACL 1、ACL概述 ACL&#xff…

讓編程變得更加直觀與高效 “JAVA圖形化編程”官網上線!

公測預約開啟 我們歷經了長達三年的時光&#xff0c;執著地堅守并潛心地進行探索&#xff0c;始終懷著一顆敬畏的心&#xff0c;最終極為謹慎地推出了這款圖形化編程桌面。它能夠使得業務與程序清晰明了地呈現&#xff0c;而且還能與傳統的低零代碼平臺實現緊密…

新品發布 | 飛凌嵌入式RK3576核心板,為AIoT應用賦能

為了充分滿足AIoT市場對高性能、高算力和低功耗主控日益增長的需求&#xff0c;飛凌嵌入式全新推出基于Rockchip RK3576處理器開發設計的FET3576-C核心板&#xff01; 集成4個ARM Cortex-A72和4個ARM Cortex-A53高性能核&#xff0c;內置6TOPS超強算力NPU&#xff0c;為您的AI…

LeetCode 兩數之和 + 三數之和

兩數之和 簡單題 思路&#xff1a;一個Map&#xff0c;key是數值&#xff0c;value是該數值對應的下標&#xff0c;遍歷的時候判斷一下當前數組下標對應的值在map里有沒有可組合成target的&#xff08;具體體現為在map里找target-nums【i】)&#xff0c;如果有&#xff0c;直接…

IDEA使用阿里通義靈碼插件

在這個AI火熱的時代&#xff0c;純手工寫代碼已經有點out了&#xff0c;使用AI插件可以幫我們快速寫代碼&#xff0c;起碼能省去寫那些簡單、重復性的代碼&#xff0c;大大提高編碼效率&#xff0c;在這里我推薦使用阿里的通義靈碼 注冊安裝 安裝注冊好后&#xff0c;打開我們…

深入探索Spark MLlib:大數據時代的機器學習利器

隨著大數據技術的迅猛發展,機器學習在各行各業的應用日益廣泛。Apache Spark作為大數據處理的利器,其內置的機器學習庫MLlib(Machine Learning Library)提供了一套高效、易用的工具,用于處理和分析海量數據。本文將深入探討Spark MLlib,介紹其核心功能和應用場景,并通過…

【流媒體】音頻相關概念詳解

文章目錄 一、前言二、概述三、音頻相關概念1、采樣率&#xff08;Sampling rate&#xff09;2、位深度&#xff08;Bit depth&#xff09;3、比特率&#xff08;Bit rate&#xff09;4、聲道&#xff08;Audio channel&#xff09;5、音頻幀6、音頻編碼7、音頻解碼 一、前言 …

【vuejs】$nextTick的原理分析和使用場景

1. $nextTick 概述 Vue.js 框架中的 $nextTick 是一個非常重要的 API&#xff0c;它允許開發者延遲回調函數的執行直到下次 DOM 更新循環之后。這意味著&#xff0c;當開發者在 Vue 組件中更改了數據&#xff0c;并且想要在 DOM 更新完成后執行某些操作時&#xff0c;可以使用…

總結開發過程遇到問題有哪些渠道可以尋找解決方案

羅列一下 百度、ChatGPT/訊飛星火等AI、Stack Overflow、github isssue 平時開發過程遇到問題的主要解決方式都是百度或者詢問ChatGPT&#xff0c;當然在java中這兩個方式也能解決百分之80的問題&#xff0c;畢竟java的社區圈夠熱鬧。 如何優雅地使用 Stack Overflow 一、學…

搭建自己的DNS服務器

個人名片 &#x1f393;作者簡介&#xff1a;java領域優質創作者 &#x1f310;個人主頁&#xff1a;碼農阿豪 &#x1f4de;工作室&#xff1a;新空間代碼工作室&#xff08;提供各種軟件服務&#xff09; &#x1f48c;個人郵箱&#xff1a;[2435024119qq.com] &#x1f4f1…

腺苷調節合成高密度脂蛋白用于三陰性乳腺癌的化學免疫治療

引用信息 文 章&#xff1a;Adenosine-modulating synthetic high-density lipoprotein for chemoimmunotherapy of triple-negative breast cancer 期 刊&#xff1a;Journal of Controlled Release&#xff08;影響因子&#xff1a;10.8&#xff09; 發表時間&am…

深入探索:十種流行的深度神經網絡及其運作原理

算法 深入探索&#xff1a;十種流行的深度神經網絡及其運作原理一、卷積神經網絡&#xff08;CNN&#xff09;基本原理工作方式 二、循環神經網絡&#xff08;RNN&#xff09;基本原理工作方式 三、長短期記憶網絡&#xff08;LSTM&#xff09;基本原理工作方式 四、門控循環單…

jupyter notebook默認工作目錄修改

jupyter notebook默認工作目錄修改 1、問題2、如何修改jupyter notebook默認工作目錄 1、問題 anaconda安裝好之后&#xff0c;我們啟動jupyter notebook會發現其默認工作目錄是在C盤&#xff0c;將工作目錄放在C盤會讓C盤很快被撐爆&#xff0c;我們應該將jupyter notebook默…

進階篇01——存儲引擎

MySQL體系結構 存儲引擎 引擎有多種類型&#xff0c;MySQL支持多種存儲引擎&#xff0c;默認的存儲引擎為innodb。不同的存儲引擎有不同的特點&#xff0c;適用不同的場景。 innodb存儲引擎 簡介 innodb的邏輯存儲結構 MYISAM存儲引擎 memory存儲引擎 三種引擎特點對比&…

2024華為數通HCIP-datacom最新題庫(變題更新③)

請注意&#xff0c;華為HCIP-Datacom考試831已變題 請注意&#xff0c;華為HCIP-Datacom考試831已變題 請注意&#xff0c;華為HCIP-Datacom考試831已變題 近期打算考HCIP的朋友注意了&#xff0c;如果你準備去考試&#xff0c;還是用的之前的題庫&#xff0c;切記暫緩。 1、…

融合創新:Web3如何重新定義網絡生態

隨著區塊鏈技術的不斷發展和Web3時代的到來&#xff0c;我們正在見證著互聯網生態的巨大變革。Web3將傳統的互聯網架構轉變為去中心化、開放、透明的新網絡生態&#xff0c;為創新和合作提供了全新的可能性。本文將深入探討Web3如何重新定義網絡生態&#xff0c;探索融合創新的…

Flutter中防抖動和節流策略

什么是防抖和節流&#xff1f; 函數節流&#xff08;throttle&#xff09;與 函數防抖&#xff08;debounce&#xff09;都是為了限制函數的執行頻次&#xff0c;以優化函數觸發頻率過高導致的響應速度跟不上觸發頻率&#xff0c;出現延遲&#xff0c;假死或卡頓的現象 是應對頻…

WeTrade亮相Traders Fair展會菲律賓站

2024年5月25日&#xff0c;菲律賓交易博覽會在馬尼拉的Edsa香格里拉酒店圓滿落幕。 WeTrade作為本次交易博覽會的重要戰略合作伙伴、參展商和贊助商&#xff0c;吸引了全球各界人士的廣泛關注。 現場&#xff0c;我們的菲律賓團隊與客戶進行了親密的面對面交流&#xff0c;并…

優思學院|精益生產學習過程中如何提高自己的能力水平?

精益生產是一項實踐多過理論的課題。 優思學院認為實踐并不限于實際的工作&#xff0c;日常的思考同樣重要&#xff0c;例如我們會要求學員在學習時不斷思考各種事物&#xff0c;不限于自己的企業。例如當你去到一家餐廳&#xff0c;你能夠觀察到什么浪費&#xff1f;你可否把…