LeetCode 383. Ransom Note

LeetCode 383. Ransom Note (赎金信)

题目

链接

https://leetcode.cn/problems/ransom-note/

问题描述

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例

输入:ransomNote = "a", magazine = "b"
输出:false

提示

1 <= ransomNote.length, magazine.length <= 105
ransomNote 和 magazine 由小写英文字母组成

思路

用数组存放有的字母,然后进行选取,超过范围就不行。

用哈希表也行,但是字母只有26个,会省一点。

复杂度分析

时间复杂度 O(n)
空间复杂度 O(1)

代码

Java

    public boolean canConstruct(String ransomNote, String magazine) {
        int[] word = new int[26];
        char[] r = ransomNote.toCharArray();
        char[] m = magazine.toCharArray();
        for (char c : m) {
            word[c - 'a']++;
        }
        for (char c : r) {
            word[c - 'a']--;
            if (word[c - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
posted @ 2022-05-19 14:19  cheng102e  阅读(35)  评论(0编辑  收藏  举报