问题:一个字符串可以由另一个字符串移位得到,例如abcd,可以由bcad移位得到。
问题分析
这个问题表面上说的是字符串,但是其实更进一步可以理解为两个字符数组的元素是否一致。最简单和直白的方式,无异于用两层循环的方式来进行循环判断。这是常规方案一。
还有方案二,则是需要用到数据结构,例如,将一个字符串转换成一个set。循环另一个数组,往set中插入数据,如果一直是失败的,则true。有一次插入成功了,则false。
方案
如果我们在转换一下思想,字符其实在计算机中的表现,它的实质上也是数字,比如ASCII码中,字符a是可以转换成数字97的,所以两个数组其实只要求元素之间的差的和,如果等于0就可以判断是否相等。
例如:
1,2,34 和 2,3,14
则:
1-2=-1
2-3=-1
3-1=2
4-4=0
差的和:
-1+-1+2+0=0
但是,这样只是判断了移位,并没有判断基准位置。比如,13和22是可以判断成立的,因此需要增加判断两个数组的乘积是否相等。来判断基准位置是否一致。
Python 实现
def test(old,new):
if len(old) <= 0 or len(new) <= 0 or len(old) != len(new):
return false;
oldArr &#