• 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))

    用求和也可以!

  • 相关阅读:
    System.Net.Http.HttpClient POST 未能创建 SSL/TLS 安全通道
    SQL Server用户权限查询
    IIS 7 Deploy .Net Framework 4.8 Application
    System.Net.Http.HttpClient 模拟登录并抓取弹窗数据
    HtmlAgilityPack Sample
    嵌套 struct & class 的遍历
    SQL循环插入测试数据
    windows文本转语音 通过java 调用python 生成exe可执行文件一条龙
    Centos8 删除了yum.repos.d 下面的文件
    nacos 配置
  • 原文地址:https://www.cnblogs.com/bonelee/p/8577181.html
Copyright © 2020-2023  润新知