力扣383(java&python)-贖金信(簡單)
題目:
給你兩個字串:ransomNote 和 magazine ,判斷 ransomNote 能不能由 magazine 裡面的字元構成。
如果可以,返回 true ;否則返回 false 。
magazine 中的每個字元只能在 ransomNote 中使用一次。
示例 1:
輸入:ransomNote = "a", magazine = "b"
輸出:false
示例 2:
輸入:ransomNote = "aa", magazine = "ab"
輸出:false
示例 3:
輸入:ransomNote = "aa", magazine = "aab"
輸出:true
提示:
1 <= ransomNote.length, magazine.length <= 105
ransomNote 和 magazine 由小寫英文字母組成
來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/ransom-note
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路:
先統計magazine中每個字元出現的次數,再遍歷ransomNote,每遍歷一個字元,都用magazine中統計出字元出現的次數減去當前字元出現的次數,如果相減的結果為負數,說明ransomNote不能由magazine 裡面的字元構成,返回false。
java程式碼:
Python3:
遍歷ransomNote中的每個字元,判斷字元在magazine是否含有相同字元,沒有直接返回False,如果當前遍歷的字元在magazine中就用replace()進行替換刪除用於更新magazine,最後返回True
程式碼:
小知識:
Python replace() 方法把字串中的 old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過 max 次。
語法:
str.replace(old, new[, max])
例項:
str = "www. baidu.com" print("百度地址:",str) print("百度新地址:",str.replace("baidu.com", "runoob.cn")) str = "this is a string example !!! " print (str.replace("is", "was", 3))
實際輸出: 百度地址:www.baidu.com 百度新地址: www.runoob.cn thwas was a string example !!!