383.赎金信


383.赎金信

给你两个字符串:ransomNotemagazine ,判断 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
  • ransomNotemagazine 由小写英文字母组成

题解:

// class Solution {
//     public boolean canConstruct(String ransomNote, String magazine) {
//         Map<Character, Integer> map = new HashMap<>();
//         for (int i = 0; i < magazine.length(); i++) {
//             char c = magazine.charAt(i);
//             if (!map.containsKey(c)) {
//                 map.put(c, 1);
//             } else {
//                 map.put(c, map.get(c) + 1);
//             }
//         }
//         for (int i = 0; i < ransomNote.length(); i++) {
//             char c = ransomNote.charAt(i);
//             if (!map.containsKey(c)) {
//                 return false;
//             } else if (map.get(c) == 0) {
//                 return false;
//             } else {
//                 map.put(c, map.get(c) - 1);
//             }
//         }
//         return true;
//     }
// }

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] character = new int[26];
        for (int i = 0; i < magazine.length(); i++) {
            character[magazine.charAt(i) - 'a']++;
        }
        for (int i = 0; i < ransomNote.length(); i++) {
            if (character[ransomNote.charAt(i) - 'a'] == 0) {
                return false;
            } else {
                character[ransomNote.charAt(i) - 'a']--;
            }
        }
        return true;
    }
}

文章作者: Feliks
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Feliks !
评论
  目录