python字母移位_【算法】字符串移位

问题:一个字符串可以由另一个字符串移位得到,例如abcd,可以由bcad移位得到。问题分析这个问题表面上说的是字符串,但是其实更进一步可以理解为两个字符数组的元素是否一致。最简单和直白的方式,无异于用两层循环的方式来进行循环判断。这是常规方案一。还有方案二,则是需要用到数据结构,例如,将一个字符串转换成一个set。循环另一个数组,往set中插入数据,如果一直是失败的,则true。有一次插入成功了,...
摘要由CSDN通过智能技术生成

问题:一个字符串可以由另一个字符串移位得到,例如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 &#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移位密码算法也被称为凯撒密码,是一种简单的密码算法,它将明文中的每个字母移动固定数量的位置来加密。例如,如果移动的数量是3,则明文中的字母A将被替换为D,字母B将被替换为E,以此类推。 以下是一个使用Python实现移位密码算法的示例: ```python def encrypt(text, shift): """ 实现移位密码算法的加密函数 :param text: 明文字符串 :param shift: 移动的数量 :return: 密文字符串 """ cipher = "" for char in text: # 如果字符是大写字母 if char.isupper(): cipher += chr((ord(char) + shift - 65) % 26 + 65) # 如果字符是小写字母 elif char.islower(): cipher += chr((ord(char) + shift - 97) % 26 + 97) # 如果字符不是字母 else: cipher += char return cipher ``` 在上面的代码中,我们实现了一个名为“encrypt”的函数,它接受两个参数:明文字符串和移动的数量。该函数首先定义了一个名为“cipher”的空字符串,然后遍历明文字符串中的每个字符。 对于每个字符,我们检查它是否是一个大写或小写字母。如果它是大写字母,则使用ord(char)函数将其转换为ASCII值,然后将其移位并使用chr()函数将其转换回字符。如果它是小写字母,则使用类似的方法进行转换。如果字符不是字母,则直接将其添加到密文字符串中。 最后,我们返回密文字符串。 以下是一个使用上面定义的“encrypt”函数加密消息的示例: ```python message = "Hello, world!" shift = 3 encrypted_message = encrypt(message, shift) print(encrypted_message) ``` 该代码输出: ``` Khoor, zruog! ``` 这是使用移位密码算法加密“Hello, world!”消息,并将每个字母向右移动3个位置得到的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值