leetcode面試題 17 13 恢復空格

2021-10-07 22:16:36 字數 1235 閱讀 7628

哦,不!你不小心把乙個長篇文章中的空格、標點都刪掉了,並且大寫也弄成了小寫。像句子"i reset the computer. it still didn』t boot!「已經變成了"iresetthecomputeritstilldidntboot」。在處理標點符號和大小寫之前,你得先把它斷成詞語。當然了,你有一本厚厚的詞典dictionary,不過,有些詞沒在詞典裡。假設文章用sentence表示,設計乙個演算法,把文章斷開,要求未識別的字元最少,返回未識別的字元數。

注意:本題相對原題稍作改動,只需返回未識別的字元數

示例:

輸入:dictionary = [「looked」,「just」,「like」,「her」,「brother」]

sentence = 「jesslookedjustliketimherbrother」

輸出: 7

解釋: 斷句後為"jess looked just like tim her brother",共7個未識別字元。

首先先處理字典,我選擇了用hashmap,首字母對應字串的形式,還有用字典樹的,不過字典樹寫起來有一些複雜。

動態規劃的思路:乙個一維dp陣列,dp[i]表示以i結尾能匹配的最大字元數量。

對於每乙個字母,都去字典裡面查詢有沒有合適的單詞。

class

solution

//處理結束,開始執行演算法

for(

int i =

0; i < sentence.

length()

; i++

)else

//show(dp);}}

}}if(i >0)

dp[i]

= math.

max(dp[i -1]

,dp[i]);

}//show(dp);

//最後乙個位置的值表示能匹配的最多的字母數量,所以減一下就行

return sentence.

length()

- dp[dp.length -1]

;}public

void

show

(int

arr)

system.out.

println()

;}}

leetcode 117

面試題17 13 恢復空格

刷題主頁 一看就是給定字串和字典,檢視是否匹配類的問題,因此直接考慮動態規劃,dp i 表示前i個字元未識別的字元最少數,那麼當s j 1 i 在字典中時,dp i min dp i dp j 1 否則dp i dp i 1 1 整體和單詞拆分類似,雙重迴圈 判斷即可。class solution ...

面試題 17 13 恢復空格

哦,不!你不小心把乙個長篇文章中的空格 標點都刪掉了,並且大寫也弄成了小寫。像句子 i reset the computer.it still didn t boot 已經變成了 iresetthecomputeritstilldidntboot 在處理標點符號和大小寫之前,你得先把它斷成詞語。當然...

面試題 17 13 恢復空格

哦,不!你不小心把乙個長篇文章中的空格 標點都刪掉了,並且大寫也弄成了小寫。像句子 i reset the computer.it still didn t boot 已經變成了 iresetthecomputeritstilldidntboot 在處理標點符號和大小寫之前,你得先把它斷成詞語。當然...