使一个字符串成为另一个字符串

时间:2017-11-12 13:55:05

标签: string python-3.x

所以,我有一个问题,就是给出两个相同长度的字符串,我必须告诉我必须在第一个字符串中改变多少个字母才能使它成为第二个字符串的字谜。

这就是我所做的:

        count = 0

        Mutable_str = ''.join(sorted("hhpddlnnsjfoyxpci"))
        Ref_str = ''.join(sorted("ioigvjqzfbpllssuj"))

        i = 0
        while i < len(Mutable_str):
            if Mutable_str[i] != Ref_str[i]:
                count += 1
            i += 1

        print(count)

我的算法在这种情况下给出了16个结果。但正确答案是10.有人能告诉我我的代码有什么问题吗? 非常感谢你!

1 个答案:

答案 0 :(得分:1)

您需要使用str.count

因此,您需要将不同character中每个strings的出现次数之间的差异相加。这可以通过str.count(c)来完成,其中c在第二个character(与string一起获得)中各自为set()。然后,我们需要对max()的差异使用0,这样如果差异为negative,则不会影响总数differences

正如你所看到的,它归结为一个整洁的小one-liner

def changes(s1, s2):
    return sum(max(0, s2.count(c) - s1.count(c)) for c in set(s2))

和一些测试:

>>> changes("hhpddlnnsjfoyxpci", "ioigvjqzfbpllssuj")
10
>>> changes("abc", "bcd")
1
>>> changes("jimmy", "bobby")
4