如果我有一个字符串列表,例如:
["car", "tree", "boy", "girl", "arc"...]
Run Code Online (Sandbox Code Playgroud)
为了在该列表中找到字谜,我该怎么办?例如(car, arc)
.我尝试为每个字符串使用for循环,我用if
它来忽略不同长度的字符串,但我无法得到正确的结果.
如何查看字符串中的每个字母并将其与列表中的其他字母按不同顺序进行比较?
我已经阅读了几个类似的问题,但答案太过先进了.我无法导入任何东西,我只能使用基本功能.
我确实有一个问题,我正在尝试使用最有效的方法来解决它.
"给定两个字符串,找出两个字符串是否相互排列."
我知道直截了当的方法(即排序两个字符串)等.
我想看看我的方法是否适用于所有情况,我不确定,所以我需要你的意见和你的意见.
def CheckPermutaionsBySumUp(firstString, secondString):
if (len(firstString) != len(secondString)):
return False
firstStringCount = 0
secondStringCount = 0
for char in firstString:
firstStringCount += ord(char)
for char in secondString:
secondStringCount += ord(char)
if firstStringCount == secondStringCount:
return True
return False
Run Code Online (Sandbox Code Playgroud)
所以我的方法是,我确实有一个有用的约束,并且如果两个字符串的长度不同,那么这两个字符串不是彼此的排列.
然后,知道每个字符都有唯一的数字表示,如果我使用ord
函数总结每个字符串的每个字母的数量,我可以比较两个总和并找出这两个字符串是否是排列.在我看来,这个解决方案不仅仅是O(n),而且比使用数组和数据结构更节省空间.
我唯一担心的是,有两个字符串,长度相同,字符不同,有相同的总和吗?