Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python查找要从字符串中删除的唯一字符数以获得字谜_Python_String_Data Structures_Substring_Anagram - Fatal编程技术网

使用Python查找要从字符串中删除的唯一字符数以获得字谜

使用Python查找要从字符串中删除的唯一字符数以获得字谜,python,string,data-structures,substring,anagram,Python,String,Data Structures,Substring,Anagram,Alice正在上密码学课,发现字谜非常有用。如果第一个字符串的字母可以被重新排列以形成第二个字符串,那么我们认为两个字符串是互不相同的。换句话说,两个字符串必须包含相同频率的相同字母。例如,bacdc和dcbac是字谜,但bacdc和dcbad不是 Alice决定采用一种包含两个大字符串的加密方案,其中加密取决于生成两个字符串字谜所需的最小字符删除次数。你能帮她找到这个号码吗 给定两个长度相同或不相同的字符串a和b,确定生成a和b字谜所需的最小字符删除数。可以从任一字符串中删除任何字符 例如,如

Alice正在上密码学课,发现字谜非常有用。如果第一个字符串的字母可以被重新排列以形成第二个字符串,那么我们认为两个字符串是互不相同的。换句话说,两个字符串必须包含相同频率的相同字母。例如,bacdc和dcbac是字谜,但bacdc和dcbad不是

Alice决定采用一种包含两个大字符串的加密方案,其中加密取决于生成两个字符串字谜所需的最小字符删除次数。你能帮她找到这个号码吗

给定两个长度相同或不相同的字符串a和b,确定生成a和b字谜所需的最小字符删除数。可以从任一字符串中删除任何字符

例如,如果a=cde和b=dcf,我们可以从字符串a中删除e,从字符串b中删除f,这样剩下的两个字符串都是cd和dc,它们都是字谜

我试过的代码

import math
import os
import random
import re
import sys
from collections import Counter 

# Complete the makeAnagram function below.

def makeAnagram(str1, str2):
   new= str1 + str2
   unique =[]
   z=0
   for char in new[:]:
       a = new.count(char)
       if a%2!=0 and char not in unique:
           z=z+(a%2)
           unique.append(char)
       a=0
   return z
if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    a = input()

    b = input()

    res = makeAnagram(a, b)

    fptr.write(str(res) + '\n')

    fptr.close()
输入

fcrxzwscanmligyxyvym

jxwtrhvujlmrpdoqbisbwhmgpmeoke

我的产量是14


根据给出的答案,输出应为30

该功能似乎有效。我不熟悉您写入文件的方式,请尝试使用以下方式:

fptr = open("MyFile.txt","w")

事实证明,这是两个计数器之间的对称差异。它可以更高效地直接计算,但通过计数器接口,它可以表示为
(x-y)+(y-x)


有关计数器类没有将此作为方法的原因,请参见循环底部赋值
a=0的意义是什么?无论如何,它会立即在循环的顶部被重新分配。问题有一些奇怪的句子,如
,例如,if and,我们可以从string和from string中删除,这样剩下的两个字符串都是,哪些是anagram。
发生了什么事?你的具体问题是什么?你得到了什么样的输出,它是怎么错的?
a = "fcrxzwscanmligyxyvym"
b = "jxwtrhvujlmrpdoqbisbwhmgpmeoke"

from collections import Counter

x = Counter(a)
y = Counter(b)

sum(((x - y) + (y - x)).itervalues()) # => 30