Hash数组法.有效的字母异位词.242
发布日期:2021-05-14 13:57:40 浏览次数:16 分类:精选文章

本文共 1192 字,大约阅读时间需要 3 分钟。

字母异位词判断方法

在编程中频繁遇到需要判断两个字符串是否为字母异位词的情况。字母异位词是指通过重新排列字母,得到另一个字符串,但不改变每个字母的频率。例如,“listen”和“silent”是字母异位词,但“listen”和“silent”并不正确,因为它们不是通过拼凑而成的。

问题

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

示例 1

输入:s = "anagram",t = "nagaram"
输出:true

示例 2

输入:s = "rat",t = "car"
输出:false

解法思路

要判断两个字符串是否是字母异位词,可以利用数组统计每个字母的数量的方法。由于 English 有 26 个字母,我们可以创建一个长度为 26 的数组,记录每个字母的出现次数。如果两个字符串中的字母数量完全相同,则它们就是字母异位词。否则,不是。

  • 将两个字符串转换为字符数组。
  • 创建一个长度为 26 的数组,初始化为 0。
  • 遍历第一个字符串,统计每个字母的数量。
  • 遍历第二个字符串,减少对应字母的数量。
  • 最后,检查数组中的所有元素是否为 0。如果有一个元素不为 0,则返回 false。
  • 代码实现

    public class 有效的字母异位词 {    public boolean isAnagram(String s, String t) {        int baseAsc = 97; // 'a' 的 ASCII 码值        char[] str1 = s.toCharArray();        char[] str2 = t.toCharArray();        int[] temp = new int[26];                for (int i = 0; i < str1.length; i++) {            temp[str1[i] - baseAsc]++;        }                for (int i = 0; i < str2.length; i++) {            temp[str2[i] - baseAsc]--;        }                for (int i = 0; i < temp.length; i++) {            if (temp[i] != 0) {                return false;            }        }                return true;    }}

    这个方法通过统计字母数量的方法,简单高效,并且适用于小写字母的字符串。由于两个字符串的字母数量必须完全一致,因此该方法可以准确判断字母异位词。

    上一篇:hash数组法长度不固定:集合
    下一篇:二分查找.基于有序数组的查找方法.704

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月14日 19时59分06秒