![](/img/trans.png)
[英]How can I check if a string has the same characters? 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
但它为alii
和liai
返回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
方法返回一个新字符串。 您必须分配给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
或者您可以从原始字符串中列出字符并对其进行排序。 因此,如果字符串具有相同的字符,它们将被转换为相同的字符序列(列表)。
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.