LeetCode 389题 找不同

LeetCode 389题 找不同

题目描述:

给定两个字符串 st,它们只包含小写字母。

字符串 *t* 由字符串 *s* 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

涉及内容:哈希表

示例:

输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。

思路:

对于字符串来说,一个比较好的思路就是将其转化为ASCII码的形式(这个思路在其他面对字母字符串的时候也可以借鉴考虑一下),之后我们遍历字符串s,为了作为对比,我们将读入的字符串的ASCII减去97(因为a对于的就是97),得到索引值,然后将索引值-1(这里-1 -2 +1 都行 只是为了方便和索引区别开)存入到哈希表中。之后遍历字符串t,与上述遍历同样的方法,只不过这里我们将索引值+1存入(反正就是和遍历s时互反就好了)。最后我们只需要遍历哈希表里面的值,若为1则是所添加的字母(因为本题只添加了一个多的元素,所以添加的那个哈希表的value必为1

提交结果:

LeetCode 389题 找不同

完整代码:

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        if len(s)==0:
            return t 
        table=[0]*26
        for i in range(len(t)):
            if i <len(s):
                table[ord(s[i])-ord('a')]-=1
            table[ord(t[i])-ord('a')]+=1
        for i in range(26):
            if table[i]!=0:
                return chr(i+97)

其他思路:

首先将两个字符串合并为a
在a中遍历,如果出现奇数次的字符即为不同的字符

上一篇:github/tensorflow/tensorflow/contrib/slim/


下一篇:Java中map.getOrDefault()方法的使用