
Hash数组法.有效的字母异位词.242
将两个字符串转换为字符数组。 创建一个长度为 26 的数组,初始化为 0。 遍历第一个字符串,统计每个字母的数量。 遍历第二个字符串,减少对应字母的数量。 最后,检查数组中的所有元素是否为 0。如果有一个元素不为 0,则返回 false。
发布日期: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 的数组,记录每个字母的出现次数。如果两个字符串中的字母数量完全相同,则它们就是字母异位词。否则,不是。
代码实现
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; }}
这个方法通过统计字母数量的方法,简单高效,并且适用于小写字母的字符串。由于两个字符串的字母数量必须完全一致,因此该方法可以准确判断字母异位词。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月14日 19时59分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
wxWidgets源码分析(9) - wxString
2019-03-06
Mybatis Generator最完整配置详解
2019-03-06
[白话解析] 深入浅出熵的概念 & 决策树之ID3算法
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
[源码分析] 消息队列 Kombu 之 Consumer
2019-03-06
抉择之苦
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
ASP.NET MVC Action Filters
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
HTTP协议状态码详解(HTTP Status Code)
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06
python 序列化及其相关模块(json,pickle,shelve,xml)详解
2019-03-06
js编写动态时钟
2019-03-06