美文网首页
[每日一题]242. valid-anagram(字典)

[每日一题]242. valid-anagram(字典)

作者: 何学诚 | 来源:发表于2019-04-10 18:00 被阅读0次
    1.这是一道判断两个字符串是否为同元素(打乱顺序)的题目。

    链接:https://leetcode.com/problems/valid-anagram/

    242-valid-anagram.JPG

    这题的做法有两种,
    第一种:首先将字符串转换成list,然后进行排序。判断两个list是否相同。O(n)=nlog(n) .(快排)
    第二种:
    1.建立一个存放26个字母的list,并将它们值初始化为0;
    2.遍历两个字符串,如果在s中有,就对这个list的这个位置加一,如果l中就减一;
    3.最后判断list中的值是否全为0。

    2.题解:

    方法一:

    class Solution(object):
        # 1.首先将字符串转换成list,然后进行排序.O(n)=nlog(n) 花在快排上了.
        def isAnagram(self, s, t):
            if len(s) != len(t):
                return False
            # 1.转为list
            L_s = list(s)
            L_t = list(t)
            # 2.对两个list排序
            L_s.sort()
            L_t.sort()
            # 3.判断两个list是否相同
            if L_s == L_t:
                return True
            else:
                return False
    

    方法二:

    class Solution(object):
        # 时间复杂度是两个for循环.O(n)=2n
        def isAnagram(self, s, t):
            if len(s) != len(t):
                return False
            # 1.建立空list
            L = [0]*26
            # 2.根据s和t,对list的值进行加减
            for i in range(len(s)):
                ascii_s = ord(s[i])-ord('a')
                ascii_t = ord(t[i]) - ord('a')
                L[ascii_s] += 1
                L[ascii_t] -= 1
            # return False for i in range(26) if L[i] != 0
            # 3.判断是否全为0
            for i in range(26):
                if L[i] != 0:
                    return False
            return True
    
    3.完整代码

    查看链接:
    https://github.com/Wind0ranger/LeetcodeLearn/blob/master/4-dict/242-valid-anagram.py

    相关文章

      网友评论

          本文标题:[每日一题]242. valid-anagram(字典)

          本文链接:https://www.haomeiwen.com/subject/vbpoiqtx.html