力扣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 !!!