本文主要是介绍LeetCode 383.赎金信(模拟,for(char c : 容器)的使用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你两个字符串: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
由小写英文字母组成
解题思路:
因为输入数据都是小写字母,所以可以维护一个长度为26的数组record用于记录每个字母出现的次数。
先遍历magazine数组,将magazine数组中出现的字母都记录下来。
再遍历ransomNote数组,ransomNote数组中的字母每出现一次则减去对应字母的次数。
最后遍历记录字母出现次数的数组record,如果出现负数说明magazine中的字母不够ransomNote用,则返回false。如果没有出现负数说明ransomNote能由magazine里面的字符构成。
代码如下:
class Solution {public boolean canConstruct(String ransomNote, String magazine) {if(ransomNote.length() > magazine.length()) return false;int[] record = new int[26];for(char c : magazine.toCharArray()) {record[c - 'a'] += 1;}for(char c : ransomNote.toCharArray()) {record[c - 'a'] -= 1;}for(int i : record) {if(i < 0) return false;}return true;}
}
这篇关于LeetCode 383.赎金信(模拟,for(char c : 容器)的使用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!