力扣(leetcode) 389. 找不同 (哈希表法) (ascll码法)

本文解析了LeetCode问题`Find the Difference`的两种解决方案:一种利用哈希表统计字符出现次数,另一种通过计算字符串ASCII码之和。通过实例展示了如何使用Python实现并理解这两种高效的方法。
摘要由CSDN通过智能技术生成

题目在这:https://leetcode-cn.com/problems/find-the-difference/

法一:

用字符串S建立哈希表,元素为key,出现次数为val。
然后遍历字符串T,如果T中字符不在哈希表中,或者出现次数大于S中出现次数(即哈希表中key对应的val为负数),则失败。

完整代码

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        from  collections import Counter

        

        hash_map = Counter(s)

        for i in t:
            if i in hash_map:
                hash_map[i] -=1
                if hash_map[i] <0:
                    return i
            else:
                return i

法二:

因为仅仅添加了一个元素,所以字符串中ascll码之和再相减,就是新加的那个字符的ascll码。再转换成字符返回就行了 。

完整代码

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        return chr(sum(map(ord, t))-sum(map(ord,s)))

其中 :
ord :字符串转ascll码
chr :ascll码转字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值