第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

leetcode 每日一題:389. 找不同

標(biāo)簽:
Python 算法

一起刷题吧

一、题目分析

输入:两个字符串,其中第二个字符串是第一个字符串重排后,随机在某个位置新加了一个别的字符
输出:新加入的字符
难度:简单
标签:哈希,位运算

示例 1
输入:s = “abcd”, t = "abcde"
输出:"e"
解释:‘e’ 是那个被添加的字母。

示例 2
输入:s = “”, t = "y"
输出:“y”

示例 3
输入:s = “a”, t = "aa"
输出:“a”

示例 4
输入:s = “ae”, t = "aea"
输出:“a”

二、参考代码

这个题目的解法很多,一个比较直观的想法是用哈希,当然这种解法很容易,这里就不给出实现代码。另外也可以通过计数的方式做寻找,在 python 中的 collections 包下有 Counter 数据结构,它可以直接获取到每个字符出现的次数,通过比较次数的不同,也可得到最终的值。参考代码如下:

from collections import Counter

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        count_s = Counter(s)
        count_t = Counter(t)
        for c in count_t:
            if count_t[c]!=count_s[c]:
                return c

这里主要想说的一种思路是通过位运算:异或。异或的运算规则为相同则为0,不同则为1,即:

1 ^ 0 = 1
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 1 = 0

而它还有一个特性,即相同的数字异或两次则等价于没有任何操作,即:

a ^ b ^ a = b

因此对于我们这个题目可直接利用这个特性,题目转换一个,给定一个字符串,只有一个字符出现一次,其他字符都会出现偶数次,找出这个字符。利用这个特性,直接将所有结果做一个异或运算最终的结果就是我们需要值。

当然这里我们还需要知道另外一个特性,即 0 与其他任意数值做异或都等于这个数值本身,即:

0 ^ a = a

因此我们代码的初始值就可以设置为 0,参考实现代码如下:

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        # 避免 None输入,同时解决输入为 s = "a", t = "" 这种特殊情况
        s = s or ""
        t = t or ""

        result = 0
        for c in s:
            result ^= ord(c)
        for c in t:
            result ^= ord(c)
        return chr(result)

测试用例:(注意:在很多面试时,面试官也会问你,你会写一些什么测试用例,一般是看你考虑问题的全面性,所以也要有能自己找准测试用例的能力)

s = Solution()
print(s.findTheDifference("abcd", "abcde"))
print(s.findTheDifference("abcd", "aebcd"))
print(s.findTheDifference("a", ""))

提交执行结果:

执行结果:通过 显示详情 执行用时:36 ms, 在所有 Python3 提交中击败了92.65%的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了5.13%的用户

时间上位运算还是很高效的。

點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消