由于字母表大小为 26,平移量可先取模:k %= 26
,避免大数重复计算。
对于每个字符 c
:
idx = c - 'a'
(0~25)。nxt = (idx + k) % 26
。ch = 'a' + nxt
。ch
。使用可变字符串(如 C++ 的 string
预留空间、Java 的 StringBuilder
、Python 的列表再 join)以避免频繁拷贝。
小红发明了一种 k 法则加密。
对于一个字母,其加密方式是:首先在 ASCII 码表中找到该字母对应的位置,然后向后移动 k 位。如果移动后超出 ′z′ ,则从 ′a′ 开始继续计数。最后,将这个字母复制一遍形成最终的密码。
例如当其字母为 ′y′ 且 k=2 时,则其加密后的密码为 "aa" 。
现在给定一个字符串,请将字符串中的每个字符按照如上规则加密,输出加密后的字符串。
第一行两个整数 n,k(1≤n≤105,1≤k≤105) ,分别表示给定的字符串长度,加密法则的大小。
第二行个长度为 n 的字符串,输入保证仅含小写字母。
一个字符串,表示加密后的字符串。
输入
1 2
y
输出
aa
说明