Python_百题大冲关_6.找到给定字符串中的不同字符

6.找到给定字符串中的不同字符

题目描述

在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:
当传入的字符串为 ‘aad’ 和 ‘ad’ 时,结果为 ‘a’。
当传入的字符串为 ‘aaabccdd’ 和 ‘abdcacade’ 时,结果为 ‘e’。

内容

本次挑战中,你需要在 diff.py 文件中补充函数 find_diff 的空缺部分。
find_diff 函数接受两个参数,str1,str2 用于指定传入的相差只有一个字符的两个字符串;
find_diff 函数输出只有一个字符的字符串。
你需要补充 find_diff 函数,使 find_diff 函数可以识别传入的 str1,str2 之间相差的那个字符。要求如下:
对于传入的两个字符串,返回它们之间相差的那个字符;
如果传入的字符串有 None ,需要使用 raise 语句显示 TypeError。

思路

由于题目已经说明只有一个字符不同 故排序找不同即可

代码

class Solution(object):

    def find_diff(self, str1, str2):
        if str1 is None or str2 is None:
            raise TypeError('str1 or str2 cannot be None')
        lenth1 = len(str1)
        lenth2 = len(str2)
        temp1 = ""
        temp2 = ""
        if lenth1 > lenth2:
            temp1 += str1
            temp2 += str2
        else:
            temp1 += str2
            temp2 += str1
        temp1 = sorted(temp1)
        temp2 = sorted(temp2)
        lenth = len(temp2)
        for i in range(lenth):
            if temp1[i] != temp2[i]:
                return temp1[i]
        return temp1[lenth]

题解代码

class Solution(object):

    def find_diff(self, str1, str2):
        if str1 is None or str2 is None:
            raise TypeError('str1 or str2 cannot be None')
        result = 0
        for char in str1:
            result ^= ord(char)
        for char in str2:
            result ^= ord(char)
        return chr(result)

题解代码思路分析

题解的解法使用了异或的性质
x^x=0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值