有效的字母异位词

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

示例 1:

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

示例 2:

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

说明:

你可以假设字符串只包含小写字母。

进阶:

如果输入字符串包含 unicode 字符怎么办?

有效的字母异位词_第1张图片

你能否调整你的解法来应对这种情况?


读题!给了两个字符串,要求判断是不是异位词,就是组成元素相同但位置不同,返回布尔类型。


有效的字母异位词_第2张图片

直接简单粗暴,提交,果然报错了。

集合无序性,都变成集合比较是不是相同的,没什么问题,但是,集合还有个去重的功能,报错样例是什么呢。t = aa    s = a   明显长度不同,但是变成集合后结果一样。


然后我想到了之前用到的异或操作。将连个字符串连接在一起然后对所有元素做异或操作。

出现问题了,字符串不支持异或,然后又想到一个问题

如s = 'aab'  s= ' b'   合并后确实能消除到0,但是这不是异位词啊。


老实一点,对其中一个遍历,如果在另一个中存在就去除。

想当然的用remove报错了,字符串去除元素用不了这个,replace可以将字符串中元素替换,替换为空相当于删除,但是这种替换是全部替换,达不到需要的remove那种一个一个的,找了一下没找到这种。

那就转转为列表

有效的字母异位词_第3张图片

简简单单的通过了

有效的字母异位词_第4张图片

这时间分布吓到我了,正态分布在55,我到了1516,NB。


有效的字母异位词_第5张图片

看一下第一的方法,离成功就差一点啊,多思考一下,或许我应该研究一下执行用时与什么有关。

你可能感兴趣的:(有效的字母异位词)