【力扣每日一题】力扣383赎金信

题目来源

力扣383赎金信

题目概述

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 falsemagazine 中的每个字符只能在 ransomNote 中使用一次。

示例

示例 1:

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

输出:false

示例 2:

输入:ransomNote = "aa", magazine = "ab"

输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"

输出:true

提示

  • 1 <= ransomNote.length, magazine.length <= 10^5
  • ransomNote 和 magazine 由小写英文字母组成

思路分析

这个题目挺简单的,用一个长度为26的数组记录每个字母出现的次数,对比ransomNote中的字母及次数是否不大于magazine中对应字母出现的次数即可。

代码实现

java实现

java 复制代码
public class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int rLength = ransomNote.length();
        int mLength = magazine.length();
        if (rLength > mLength) {
            return false;
        }
        int[] rest = new int[26];
        int count = 0;
        for(int i = 0; i < rLength; i++) {
            rest[ransomNote.charAt(i) - 'a']++;
            count++;
        }
        for (int i = 0; i < mLength; i++) {
            int current = magazine.charAt(i) - 'a';
            if (rest[current] > 0) {
                count--;
                if (count == 0) {
                    return true;
                }
            }
            rest[current]--;
        }
        return false;
    }

}

c++实现

cpp 复制代码
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int rLength = ransomNote.length();
        int mLength = magazine.length();
        if (rLength > mLength) return false;

        int rest[26] = { 0 };
        int count = 0;
        for (int i = 0; i < rLength; i++) {
            rest[ransomNote[i] - 'a']++;
            count++;
        }
        for (int i = 0; i < mLength; i++) {
            int current = magazine[i] - 'a';
            if (rest[current] > 0){
                if ((--count)==0) {
                    return true;
                }
            }
            rest[current]--;
        }
        return false;
    }
};
相关推荐
西工程小巴4 分钟前
实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
c语言·算法·嵌入式
TT哇9 分钟前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程15 分钟前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
Moonbit21 分钟前
MoonBit Perals Vol.06: MoonBit 与 LLVM 共舞 (上):编译前端实现
后端·算法·编程语言
青川入梦22 分钟前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
执子手 吹散苍茫茫烟波1 小时前
leetcode415. 字符串相加
java·leetcode·字符串
小韩博1 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
青草地溪水旁1 小时前
UML函数原型中stereotype的含义,有啥用?
c++·uml
萤丰信息1 小时前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
青草地溪水旁1 小时前
UML函数原型中guard的含义,有啥用?
c++·uml