台安变频器n2按键说明_力扣 925. 长按键入
生活随笔
收集整理的這篇文章主要介紹了
台安变频器n2按键说明_力扣 925. 长按键入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
925. 長按鍵入
輸出:true
解釋:'alex' 中的 'a' 和 'e' 被長按。
輸出:false
解釋:'e' 一定需要被鍵入兩次,但在 typed 的輸出中不是這樣。
輸出:true
輸出:true
解釋:長按名字中的字符并不是必要的。
name.length <= 1000 typed.length <= 1000 name 和 typed 的字符都是小寫字母。 ?
????def?isLongPressedName(self,?name:?str,?typed:?str)?->?bool:
????????pre?=?None
????????n1,?n2?=?len(name),?len(typed)
????????i?=?j?=?0
????????while?i?and?j?????????????if?name[i]?==?typed[j]:
????????????????pre?=?i
????????????????i?+=?1
????????????????j?+=?1
????????????elif?name[i]?!=?typed[j]:
????????????????if?pre?is?None:
????????????????????return?False
????????????????if?name[pre]?!=?typed[j]:
????????????????????return?False
????????????????elif?name[pre]?==?typed[j]:
????????????????????j?+=?1
????????if?i?==?n1?and?j?==?n2:
????????????return?True
????????if?i?and?j?==?n2:
????????????return?False
????????if?name[pre]?*?(n2?-?j)?==?typed[j:]:
????????????return?True
????????return?False
題目描述
你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字符 c 時,按鍵可能會被長按,而字符可能被輸入 1 次或多次。
你將會檢查鍵盤輸入的字符 typed。如果它對應的可能是你的朋友的名字(其中一些字符可能被長按),那么就返回 True。
示例 1:
輸入:name = "alex", typed = "aaleex"輸出:true
解釋:'alex' 中的 'a' 和 'e' 被長按。
示例 2:
輸入:name = "saeed", typed = "ssaaedd"輸出:false
解釋:'e' 一定需要被鍵入兩次,但在 typed 的輸出中不是這樣。
示例 3:
輸入:name = "leelee", typed = "lleeelee"輸出:true
示例 4:
輸入:name = "laiden", typed = "laiden"輸出:true
解釋:長按名字中的字符并不是必要的。
提示:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/long-pressed-name
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
同時遍歷兩個字符串
你有一位手殘的鍵盤不好的朋友要輸入他的名字,有時會出現連擊,讓你判斷是否輸入對了。
這道簡單題感覺邏輯也不是那么簡單,要考慮一些特殊的測試用例,下面是解題思路,相當于文字版的代碼:
- 使用下標 i 和 j 同時遍歷 name 和 typed,并使用 pre 下標記錄上一次成功匹配的字符 name[pre]。
- 如果 name[i] == typed[j],兩個下標同時加一,進入下一次匹配,別忘了還要讓 pre 記住當前匹配到的字符
- 如果 name[i] != typed[j],當前這一位無法匹配,此時又分幾種情況:
- 當 pre 還為 None 時,比如 name 為 'a' 而 typed 為 'b',一上來就無法匹配,pre 還沒來得及記錄任何東西,直接返回 False。
- 當 name[pre] != typed[j] 時,說明當前輸入的字符 typed[j] 不是上一次成功匹配的字符 name[pre] 的連擊,直接返回 False。
- 當 name[pre] == typed[j] 時,構成連擊,讓 j 往前走一步。
- 結束循環后,還需要繼續判斷:
- 如果下標 i 和 j 都到達了終點,說明完全匹配干凈了,誰也不剩,返回 True。
- 如果 i 沒有到達終點,但 j 到達終點,說明 name 中還有字符沒有輸入,返回 False。
- 如果 j 沒有到達終點,且上一次成功匹配的字符經過重復能夠得到剩下的 typed[j:],則返回 True。這種情況適用于判斷 name 為 'abc',typed 為 'abccccc' 這樣的測試用例。
- 其他情況返回 False。
????def?isLongPressedName(self,?name:?str,?typed:?str)?->?bool:
????????pre?=?None
????????n1,?n2?=?len(name),?len(typed)
????????i?=?j?=?0
????????while?i?and?j?????????????if?name[i]?==?typed[j]:
????????????????pre?=?i
????????????????i?+=?1
????????????????j?+=?1
????????????elif?name[i]?!=?typed[j]:
????????????????if?pre?is?None:
????????????????????return?False
????????????????if?name[pre]?!=?typed[j]:
????????????????????return?False
????????????????elif?name[pre]?==?typed[j]:
????????????????????j?+=?1
????????if?i?==?n1?and?j?==?n2:
????????????return?True
????????if?i?and?j?==?n2:
????????????return?False
????????if?name[pre]?*?(n2?-?j)?==?typed[j:]:
????????????return?True
????????return?False
運行結果:
?執行結果:通過
執行用時:32 ms, 在所有 Python3 提交中擊敗了97.83% 的用戶
內存消耗:13.5 MB, 在所有 Python3 提交中擊敗了10.91% 的用戶
2020.10.21
總結
以上是生活随笔為你收集整理的台安变频器n2按键说明_力扣 925. 长按键入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: p20钢成分(p20钢材硬度是多少)
- 下一篇: springboot嵌入thymelea