LeetCode242.有效的字母异位词

242.有效字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入: s = “anagram”, t = “nagaram” 输出: true 示例 2:

输入: s = “rat”, t = “car” 输出: false

提示:

1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?


思路

因为只含有小写字母,所以定义一个新的数组record,长度为26。

每个字母的ascii码中与字符’ a '的位置都是不同的,相同字母的ascii码与字符’a’的相对位置是相同的

先遍历s,并每次遍历时把s中的字母在record中相对应位置的数值加一

再遍历t,并每次遍历时把t中的字母在record中对应位置的数值减一

如果最后record数组全为0则 字符串s和t是异位词

charAt()方法: 接受一个整数参数作为索引,并返回该索引位置上的字符。索引从0开始,表示字符串中的第一个字符。例如,如果有一个字符串s =
“Hello”,可以使用charAt()方法获取特定索引位置上的字符。

for(int count : record){statemen} Java中的增强型for循环(也称为for-each循环)。它用于遍历一个名为record的整数数组中的每个元素,并将每个元素的值赋给循环变量count。在每次循环迭代时,count变量将依次取得record数组中的元素值,可以在循环体内使用count变量进行相应的操作。

class Solution {
    public boolean isAnagram(String s, String t) {
    //只有小写字母,可以只定义一个长度为26的数组
    int[] record = new int[26];
    for(int i= 0; i < s.length(); i++){
        //charAt()方法接受一个整数参数作为索引,并返回该索引位置上的字符
        //表达式s.charAt(i) - 'a'的结果是一个整数,表示字符在字母表中的相对位置
        record[s.charAt(i) - 'a']++;
    }

    for(int i = 0; i < t.length(); i++){
        record[t.charAt(i) - 'a']--;

    }

    //Java加强for循环,每次循环迭代时,
    //count变量将依次取得record数组中的元素值
    //可以在循环体内使用count变量进行相应的操作。
    for(int count : record){
        if(count!= 0) return false;
    }
    return true;
    }

}
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值