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

思路:字母相互抵消的思路,本题字符串中只包含小写字母26位,那就新建record数组int26,下标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;

    }
}
相关推荐
软件派5 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
code2cat6 小时前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
wuminyu13 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh13 小时前
SpringBoot 配置⽂件
java·spring boot·spring
ZhengEnCi13 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
Wang's Blog13 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象32713 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕13 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
三无少女指南15 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程
香蕉大香蕉(06敬畏市场)15 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股