我们从用户那里获得两个定义映射(字符转换)的字符值,例如'a' -> 'p'
。我们如何测试其他字符串对,以查看字符串中的所有字符是否保持相同的映射/转换。例如:
'abcd', 'pqrs' returns True
'aaa', 'ppp' returns True
'acb', 'pqr' returns False
'aab', 'pqr' returns False
答案 0 :(得分:5)
我们要确认字符从一个字符串到另一个字符串的偏移(移位)是一致的。确保目标字符串长度相同;计算偏移量并使用all()
和生成器表达式组合来尝试确保逻辑在第一次未命中时完成,如果有的话,而不是继续检查:
def test(first, second, third, fourth):
if len(third) != len(fourth):
return False
offset = ord(first) - ord(second)
return all((ord(x) - ord(y)) == offset for x, y in zip(third, fourth))
>>> test('a', 'p', 'abcd', 'pqrs')
True
>>> test('a', 'p', 'aaa', 'ppp')
True
>>> test('a', 'p', 'acb', 'pqr')
False
>>> test('a', 'p', 'aab', 'pqr')
False
答案 1 :(得分:1)
您可以通过从用户中删除第一个ASCII值来实现此目的。
'abcd' = [97 98 99 100] subtract it by 'a' give you [0 1 2 3].
'pqrs' = [112 113 114 115] subtract it by 'p' give you [0 1 2 3].
因此,如果减法结果为您提供相同的结果,请返回True