zoukankan      html  css  js  c++  java
  • leetcode 389. Find the Difference

    Given two strings s and t which consist of only lowercase letters.

    String t is generated by random shuffling string s and then add one more letter at a random position.

    Find the letter that was added in t.

    Example:

    Input:
    s = "abcd"
    t = "abcde"
    
    Output:
    e
    
    Explanation:
    'e' is the letter that was added.

    class Solution(object):
        def findTheDifference(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            """
            s = "abcd" t = "abcde" =>e
            s = "abcd" t = "abcdee" =>ee
            s = "abcd" t = "abcdfe" =>ef?fe?
            s = "a" t = "" =>a
            s = "ab" t = "" =>ab?ba?
            # use dict to map t
            # sub the letter of t in s
            """
            letter_cnt = {}
            for c in t:
                if c not in letter_cnt:
                    letter_cnt[c] = 0
                letter_cnt[c] += 1
            for c in s:
                if c in letter_cnt:
                    letter_cnt[c] -= 1
                    assert letter_cnt[c] >= 0
            return "".join(c*letter_cnt[c] for c in letter_cnt)

    用排序:

    class Solution(object):
        def findTheDifference(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            # abcd, abcde
            # afjz, abcfjz
            # afjx, abcfjxyz
            s = sorted(s)
            t = sorted(t)
            ans = ""
            i = j = 0
            while i< len(s):
                if s[i] != t[j]:
                    ans += t[j]
                    j += 1
                else:
                    i += 1
                    j += 1
            return ans+"".join(t[j:])

    如果仅仅有一个char不一样则可以使用xor:

    class Solution(object):
        def findTheDifference(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            # if just only one char is different
            ans = 0
            for c in s:
                ans ^= ord(c)
            for c in t:
                ans ^= ord(c)
            return chr(ans)
    class Solution(object):
        def findTheDifference(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            # if just only one char is different        
            return chr(sum(ord(i) for i in t)-sum(ord(i) for i in s))

    用求和也可以!

  • 相关阅读:
    Java ClassLoader机制
    Spring JMS
    MySQL权限分配
    Java参数传递机制
    JVM装载过程
    PowerDesigner15使用时的十五个问题
    修改当前行 传值
    WebSphere MQ
    Hibernate Search牛刀小试 (转)
    关于hibernate的缓存使用
  • 原文地址:https://www.cnblogs.com/bonelee/p/8577181.html
Copyright © 2011-2022 走看看