如何检查两个字符串是否具有相同的字符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