抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

一:题目描述:

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

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

二:示例与提示

示例 1:

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

示例 2:

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

提示:

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

三:思路

排序

思路一:利用排序,将两个字符串排序好再一一对比字符是否相同

哈希表

思路二:利用哈希表,创建hashmap,将s中的每个字符都添加到hashmap中,并设置初始值为1,如果有相同的字符,值+1。再到t遍历,判断hashmap中是否有t的字符,如果有,原先的hashmap对应字符的值-1,(理解为相互消掉),如果值不大于(说明词数不匹配),返回false

四:代码

1:正则

1
2
3
4
var reverseWords = function(s) {
return s.trim().split(/\s+/).reverse().join(' ')
// console.log(s.trim().split(/\s+/).reverse().join(' '))
};

2:双端队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var reverseWords = function(s) {
//双端队列
//1. 去除字符串前后的空格
let left = 0
let right = s.length-1
let word = ''
let queue = []
while(s.charAt(left) === ' ') left++
while(s.charAt(right) === ' ') right--
//2.遍历字符串 拼接单词 加入队列
while(left <= right){
let char = s.charAt(left)
if(char === ' ' && word){
queue.unshift(word)
word = ''
}else if(char !== ' '){
word += char //拼串
}
left++
}
queue.unshift(word)
return queue.join(' ')
};

评论