最少插入字元;及分詞問題分析
今日面試題:最少插入字元
給定字串,可以通過插入字元,使其變為迴文。求最少插入字元的數量。例如:
1. ab最少插入1個字元,變為bab
2. aa最少插入0個字元
3. abcd最少插入3個字元,dcbabcd
============================================================
分詞問題分析
原題
給定字串,以及一個字典,判斷字串是否能夠拆分為欄位中的單詞。例如,欄位為{hello,world},字串為hellohelloworld,則可以拆分為hello,hello,world,都是字典中的單詞。
分析
這個題目喚作“分詞問題”,略顯寬泛。只是想提及這個問題,這是在自然語言處理,搜尋引擎等等領域中,非常基礎的一個問題,解決的方法也比較多,相對比較成熟,不過這仍舊是一個值得進一步探索的問題。那我們先從這個簡單的題目入手,看看如何處理題目中這個問題。 最直接的思路就是遞迴,很簡單。我們考慮每一個字首,是否在字典中?如果在,則遞迴處理剩下的字串,如果不在;則考慮其他字首。示例程式碼如下:
在上面的程式碼中:每一種情況都要處理substr,程式的耗時比較長,如果在OJ上提交,乾脆超時的,那麼如何改進呢?
這個題目的處理,上期的題目是很相似的。在遞迴子問題中,找重複的子問題。也非常明顯,如下圖(圖片來自GeeksforGeeks)所示:
所以,通過動態規劃的方法,可以通過有較大幅度的提升,同樣,這個題目與前面的每一個狀態都有關係的,所以,是一個二重迴圈,時間複雜度為O(n^2)。示例程式碼如下:
除此之外,這個問題的方法是非常多的,大家還有什麼思路呢?歡迎大家展開思路,在微博上互動討論。 經過上一期的問題,還有這一期的,我想對於這類問題,遞迴以及動態規劃方法的改進,童鞋們應該有比較好的體會了。希望大家能多做寫聯絡,比如在OJ上,熟能生巧,提升程式碼功力。
【分析完畢】
本文來自微信:待字閨中,2013-10-15釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 詞法分析的前奏:字元分析(三)詞法分析字元
- 5-順序表查詢及插入問題
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- 字元編碼問題字元
- 【char* 字元指標的用法】及【輸出NULL的問題】字元指標Null
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- 自然語言處理中的分詞問題總結自然語言處理分詞
- python呼叫程式路徑中包空格,及包含特殊字元問題Python字元
- ArrayList 原始碼分析 -- 擴容問題及序列化問題原始碼
- ArrayList 原始碼分析 — 擴容問題及序列化問題原始碼
- CAS原理分析及ABA問題詳解
- 關鍵詞加粗和插入關鍵詞
- MySQL 中字元編碼問題MySql字元
- 字元編碼問題記錄字元
- 如何在 Mac上插入特殊字元Mac字元
- nlp基礎之詞、子詞或字元字元
- 單詞搜尋問題
- 業務分析中有關詞彙表的常見問題 - modernanalystNaN
- 關於kindeditor插入程式碼問題
- 向SQLServer插入單引號問題SQLServer
- Java記憶體問題 及 LeakCanary 原理分析Java記憶體
- React的零渲染問題及原始碼分析React原始碼
- AWD平臺搭建及遇到的問題分析
- 掌握 analyze API,搞定分詞難題API分詞
- 2162: 練9.1 字元菱形 【空格問題】字元
- mybase 自動插入很多空行的問題
- scheme跳轉特殊字元編碼問題Scheme字元
- python讀入不定行字元的問題Python字元
- 分詞分詞
- Linux給檔案隔兩個字元插入-Linux字元
- inline-block元素下移問題的分析及解決inlineBloC
- MYSQL timestamp NOT NULL插入NULL的報錯問題MySqlNull
- 併發請求的重複插入問題
- LeetCode 3014[輸入單詞需要的最少按鍵次數I]LeetCode
- 詳解動態規劃最少硬幣找零問題–JavaScript實現動態規劃JavaScript
- 詳解動態規劃最少硬幣找零問題--JavaScript實現動態規劃JavaScript
- 分庫分表插入資料
- ClientAbortException 問題分析clientException
- ElasticSearch7.3學習(十五)----中文分詞器(IK Analyzer)及自定義詞庫Elasticsearch中文分詞