力扣242. 有效的字母异位词

思路:字母相互抵消的思路,本题字符串中只包含小写字母26位,那就新建record数组int[26],下标0-25,代表小写字母a-z, 需要通过 某字符减a 来达到这一目的;

java 复制代码
class Solution {
    public boolean isAnagram(String s, String t) {
        
        //这里record数组,下标0-25,代表小写字母a-z, 需要通过 某字符减a 来达到这一目的;
        //字符相减得到数字,如:b-a = 1,z-a=25,因为字符ASCLL码中,b比a大1,z比a大25;
        int[] record = new int[26];
        
        //通过相互抵消的思路,记录s字符串每个字符出现的次数;
        for(int i=0; i<s.length();i++) {
            record[s.charAt(i) - 'a']++; 
        }
        //在t字符串中抵消,字符出现就次数减1
        for(int j=0; j<t.length();j++){
            record[t.charAt(j) - 'a']--;
        }
		//遍历看看抵消完是不是都是0
        for(int k =0;k<record.length;k++){
            if(record[k]!=0){
                return false;
            }
        }
        return true;


    }
}

这个382题也是一样的道理,只是抵消之后,可能有的值会 小于0

java 复制代码
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length()>magazine.length()) return false;

        //下标表示字母,元素值表示次数;
        int[] record = new int[26];
        //抵消思想
        for(int i=0;i<magazine.length();i++){
            record[magazine.charAt(i) - 'a']++;
        }
        for(int i=0;i<ransomNote.length();i++){
            record[ransomNote.charAt(i) - 'a']--;
        }
        for(int i=0;i<record.length;i++){
            if(record[i]<0){
                return false;
            }
        }
        return true;

    }
}
相关推荐
ghie90902 分钟前
基于MATLAB的遗传算法优化支持向量机实现
算法·支持向量机·matlab
CryptoRzz7 分钟前
欧美(美股、加拿大股票、墨西哥股票)股票数据接口文档
java·服务器·开发语言·数据库·区块链
杂货铺的小掌柜26 分钟前
apache poi excel 字体数量限制
java·excel·poi
大厂码农老A35 分钟前
你打的日志,正在拖垮你的系统:从P4小白到P7专家都是怎么打日志的?
java·前端·后端
朝新_37 分钟前
【优选算法】第一弹——双指针(上)
算法
艾菜籽1 小时前
Spring MVC入门补充2
java·spring·mvc
艾莉丝努力练剑1 小时前
【C++STL :stack && queue (一) 】STL:stack与queue全解析|深入使用(附高频算法题详解)
linux·开发语言·数据结构·c++·算法
爆更小哇1 小时前
统一功能处理
java·spring boot
程序员鱼皮1 小时前
我造了个程序员练兵场,专治技术焦虑症!
java·计算机·程序员·编程·自学
CoovallyAIHub1 小时前
ICLR 2026 惊现 SAM 3,匿名提交,实现“概念分割”,CV领域再迎颠覆性突破?
深度学习·算法·计算机视觉