题目:
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
题目链接:242.有效的字母异位词
卡哥的视频讲解:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词
题目思路:异位词也就是判断两个字符串中所含的元素是否相同,位置不同也没关系,定义一个数组,因为题目中给出的字符只有小写字母,把字符映射到哈希表的索引下标上,遍历第一个字符串的时候,把出现的字符索引加一,再遍历第二个字符串,把遇见的字符减一,如果这个数组的所有元素都是零的话,就说明两个字符串是字母异位词。
步骤:
1.定义一个数组
2.遍历两个字符串
3.增强for循环语句用来比较
代码示例:
代码逻辑:
- 首先,创建一个长度为 26 的整型数组
record
,用于记录每个字母出现的次数,初始化为全零。 - 遍历字符串
s
,对于每个字符,将对应位置的计数加 1。 - 遍历字符串
t
,对于每个字符,将对应位置的计数减 1。 - 最后,遍历
record
数组,如果有任何一个计数不为 0,说明两个字符串不是字母异位词,返回false
;否则返回true
。
这个算法的时间复杂度是 O(n),其中 n 是字符串的长度,因为需要遍历两个字符串。整体的空间复杂度为 O(1),因为使用了一个固定长度的数组。
注意!别忘了charAt方法和求长度的括号噢