如果我们有某些条件要履行
a is the opposite of b
c is the opposite of h
l is the opposite of r
与字符串acl
相反的是bhr
你们是否认为你可以帮我弄清楚如何构建一个函数,当给定两个字符串时会返回一个布尔值,让我知道给定的字符串是否相反。例如输入:opposite("ahl","bcr")
将返回True
而("ahl","bbr")
将返回False
。
答案 0 :(得分:1)
我会像字符串比较一样,除了对于每个字符,都会有一个查找表来获取翻译的值,如下所示:
lookup = {
'a': 'b',
'c': 'h',
'l': 'r'
}
def opposite(one, two):
count = 0
if len(one) != len(two):
return False
for i in one:
if (lookup[i] != two[count] ):
return False
count += 1
return True
if __name__ == '__main__':
print opposite('acl', 'bhr')
答案 1 :(得分:0)
如果您有查找表,那么这是一个单行。
lookup = {
'a': 'b',
'c': 'h',
'l': 'r'
}
def opposite(str1, str2):
return [ lookup[c] for c in str1] == [ c for c in str2 ]
根据实际情况(您是否知道第一个字符串仅包含" acl"以及第二个仅包含其对立面),您可能需要进行双向查找:
lookup = {
'a': 'b',
'c': 'h',
'l': 'r',
'b': 'a',
'h': 'c',
'r': 'l'
}
如果您想在输入中存在无效字符时引发异常,则可以更改该功能:
def opposite(str1, str2):
return [ lookup[c] for c in str1] == [ lookup[lookup[c]] for c in str2 ]