leetcode with python:389. Find the Difference

题目:

You are given two strings s and t.

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

Return the letter that was added to t.

给定两字串s和t,已知t为s加上一个字元重组而成,找出那个字元

较直观的解法如下

class Solution:    def findTheDifference(self, s: str, t: str) -> str:        for i in t:            if i not in s:                return i            else:                s=s.replace(i,"",1)

一个一个看t的元素是否在s内
若在则将一个在s内的该元素移除
反之则代表我们找到了多出的那个字元,回传它
最后执行时间33ms(faster than 95.91%)

也能用位元运算的^来解

class Solution:    def findTheDifference(self, s: str, t: str) -> str:        ans=0        for i in t:            ans=ans^ord(i)        for i in s:            ans=ans^ord(i)                    return chr(ans)

设定ans=0
将s,t内所有字元转为ASCII编码,和ans行^运算(0^x=x,x^x=0)
运用^的交换律,最后的运算结果即为多出的那个字元的ASCII编码
将其转换为字元后回传
最后执行时间33ms(faster than 95.91%)

那我们下题见


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章