首页 > 其他分享 >力扣383 赎金信

力扣383 赎金信

时间:2022-11-26 23:35:37浏览次数:41  
标签:ransomNote return String int 力扣 magazine 383 赎金 false

题目:

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

示例:

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

思路:

和《字母异位词》类似,但是magzine可以比ransomNote位数多。

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] res=new int[26];
        if(ransomNote.length()>magazine.length()){
            return false;
        }
        for(int i=0;i<ransomNote.length();i++){//统计ransonNote里字符出现次数
            res[ransomNote.charAt(i)-'a']++;
        }
        for(int i=0;i<magazine.length();i++){//统计magzine里字符出现的次数
            res[magazine.charAt(i)-'a']--;
        }
        for (int count: res) {//如果最终ransomNote中字符统计次数没有被减为0或以下,则false
            if (count > 0) { 
                return false;
            }
        }
        return true;
    }
}

优化:

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

 

标签:ransomNote,return,String,int,力扣,magazine,383,赎金,false
From: https://www.cnblogs.com/cjhtxdy/p/16928629.html

相关文章

  • 力扣454 四数相加
    题目:给四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+......
  • 力扣 leetcode 882. 细分图中的可到达节点
    问题描述给你一个无向图(原始图),图中有n个节点,编号从0到n-1。你决定将图中的每条边细分为一条节点链,每条边之间的新节点数各不相同。图用由边组成的二维数组edg......
  • 力扣1 两数之和
    题目:给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个......
  • 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)
    题目:已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,......
  • 力扣 leetcode 795. 区间子数组个数
    问题描述给你一个整数数组nums和两个整数:left及right。找出nums中连续、非空且其中最大元素在范围[left,right]内的子数组,并返回满足条件的子数组的个数。生成......
  • 力扣202 快乐数
    题目:编写一个算法来判断一个数n是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这......
  • 力扣349 两个数组的交集
    题目:给定两个数组 nums1 和 nums2,返回它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。示例:输入:nums1=[1,2,2,1],nums......
  • 力扣81(java&python)-搜索旋转排序数组 II(中等)
    题目:已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[......
  • 力扣 leetcode 3. 无重复字符的最长子串
    题目描述给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。提示:0<=s.length<=5*104s由英文字母、数字、符号和空格组成示例示例1:输入:s=......
  • 力扣242 有效的字母异位词
    题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若 s和t 中每个字符出现的次数都相同,则称 s和t 互为字母异位词。示例:输入:......