Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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_Python 3.x - Fatal编程技术网

如何检查两个字符串是否具有相同的字符python

如何检查两个字符串是否具有相同的字符python,python,python-3.x,Python,Python 3.x,我想检查两个字符串是否有相同的字符? 比如: “aand”和“daan”=>true “aafw”和“kaaw”=>错误 这是我的代码: def procedures(txt1, txt2): str1 = txt1.lower() str2 = txt2.lower() for i in str1: for j in str2: if i == j: str1.replace(i, "&

我想检查两个字符串是否有相同的字符?

比如:
“aand”和“daan”=>true
“aafw”和“kaaw”=>错误

这是我的代码:

def procedures(txt1, txt2):
    str1 = txt1.lower()
    str2 = txt2.lower()
    for i in str1:
        for j in str2:
            if i == j:
                str1.replace(i, "", 1)
                str2.replace(i, "", 1)
                print("did")
    if str1 == "" and str2 == "":
        return True
    else:
        return False
但是对于
alii
liai
,它返回
False


我是做什么的?

你是否考虑到发生的次数?如果是这样,可以想象将每个str转换成一个字符列表,然后对每个列表进行排序。这是一个众所周知的问题,有许多可能的解决方案。试试这个:

def procedures(txt1, txt2):
    return sorted(txt1) == sorted(txt2)

您必须为第一个文本创建一个列表,然后使用循环在第二个str中逐个检查。就是这样。

Str对象是不可编辑的。因此
str.replace
方法返回一个新字符串。您必须分配给
str1
str2
结果。因此,您的代码现在必须如下所示:

def procedures(txt1, txt2):
    str1 = txt1.lower()
    str2 = txt2.lower()
    for i in str1:
        for j in str2:
            if i == j:
                str1 = str1.replace(i, "", 1)
                str2 = str2.replace(j, "", 1)
                print("did")
    if str1 == "" and str2 == "":
        return True
    else:
        return False
或者,您可以从原始字符串中创建字符列表并对其进行排序。所以如果 字符串具有相同的字符,它们将转换为相同的字符序列(列表)


可以迭代python字符串,就像迭代列表/元组一样。一个简单的功能是:

def stringCompare(a,b):
对于我来说,在一个:
如果我不在b:
返回错误
返回真值
打印(stringCompare(“aand”、“daan”))
>>真的
打印(stringCompare(“aafw”、“kaaw”))
>>假的
打印(stringCompare(“alii”、“liai”))
>>真的
注意上述函数仅检查两个字符串中的所有字符是否相等。现在,为了检查出现次数,您可以使用
集合
作为:

从集合导入计数器
def stringCompare2(a、b):
#并对其发生情况进行了比较
发生率=计数器(a)
发生次数b=计数器(b)
返回发生次数a==发生次数b
打印(stringCompare2(“abc”、“aabc”))
>>假的
打印(stringCompare2(“abc”、“cba”))
>>真的

首先,我们对两个字符串进行排序。第二,比较它们

def equal(a,b):
    a = sorted(a)
    b = sorted(b)
    if a == b:
        return True
    return False

你不需要两个循环,你可以用线性时间来解决这个问题。考虑一下:''DeF等于(a,b):返回排序(a)=排序(b)`。
def procedures(txt1, txt2):
    seq1 = list(txt1.lower())
    seq2 = list(txt2.lower())

    seq1.sort()
    seq2.sort()

    if seq1 == seq2:
        return True
    else:
        return False
def equal(a,b):
    a = sorted(a)
    b = sorted(b)
    if a == b:
        return True
    return False