繁体   English   中英

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

[英]how to check if 2 string have same characters or no? - python

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

喜欢:
"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

但它为aliiliai返回False

我所做的?

您可以像遍历列表/元组一样遍历 python 字符串。 一个简单的 function 将是:

def stringCompare(a, b):
    for i in a:
        if i not in b:
            return False
        
    return True

print(stringCompare("aand", "daan"))
>> True

print(stringCompare("aafw", "kaaw"))
>> False

print(stringCompare("alii", "liai"))
>> True

注意上面的 function 只检查两个字符串中的所有字符是否相等。 现在,为了检查出现次数,您可以使用collections作为:

from collections import Counter

def stringCompare2(a, b):
    # also compares the occurance
    occurance_dict_a = Counter(a)
    occurance_dict_b = Counter(b)
    
    return occurance_dict_a == occurance_dict_b

print(stringCompare2("abc", "aabc"))
>> False

print(stringCompare2("abc", "cba"))
>> True

这是一个众所周知的问题,有许多可能的解决方案。 尝试这个:

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

Str 对象不可编辑。 所以str.replace方法返回一个新字符串。 您必须分配给str1str2结果。 所以你的代码现在必须是这样的:

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

或者您可以从原始字符串中列出字符并对其进行排序。 因此,如果字符串具有相同的字符,它们将被转换为相同的字符序列(列表)。

def procedures(txt1, txt2):
    seq1 = list(txt1.lower())
    seq2 = list(txt2.lower())

    seq1.sort()
    seq2.sort()

    if seq1 == seq2:
        return True
    else:
        return False

您是否考虑了出现次数? 如果是这样,可以想象将每个 str 变成一个字符列表,然后对每个列表进行排序。 然后将继续比较这些列表。

def procedures(txt1, txt2):
str1 = txt1.lower()
str2 = txt2.lower()

str1 = list(str1)
result = False

for dt in str1:
    if dt in str2:
        result = True
    else:
        result = False

return result 

print(procedures('neeraj','prakash'))
print(procedures('neeraj','neeraj'))

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM