🔍 题目给出的加密过程(从原文 → 密文)有三步:
左移三位:每个字母在字母表中向左移动3位
例如:d → a, e → b, c → z(循环左移)
逆序存储:整个字符串反转
大小写互换:大写变小写,小写变大写
所以:
明文 → (1) 左移3 → (2) 反转 → (3) 换大小写 → 密文
🔄 那么解密过程就是逆向操作,顺序也要反过来:
要从密文 → 明文,需按相反顺序执行相反操作:
先换大小写(因为加密最后一步是换大小写,所以解密第一步要换回来)
再反转字符串(抵消加密的第二步)
最后右移三位(因为加密是左移3,解密就要右移3,即 +3,注意循环)
✅ 具体步骤(解密算法)
给定密文 cipher:
大小写互换:遍历每个字符,大写→小写,小写→大写。
反转字符串。
每个字母右移3位(循环):
对于大写字母 'A'~'Z':(c - 'A' + 3) % 26 + 'A'
对于小写字母 'a'~'z':(c - 'a' + 3) % 26 + 'a'
注意:右移3位 = 加密时左移3的逆操作。
🔢 验证样例
输入密文:GSOOWFASOq
第1步:大小写互换
G → g
S → s
O → o
O → o
W → w
F → f
A → a
S → s
O → o
q → Q
得到:gsoowfasoQ
第2步:反转
Qosafwoosg
第3步:右移3位(每个字母)
字符 类型 原位置 +3 新字符 Q 大写 16 19 T o 小写 14 17 r s 小写 18 21 v a 小写 0 3 d f 小写 5 8 i w 小写 22 25 z o 小写 14 17 r o 小写 14 17 r s 小写 18 21 v g 小写 6 9 j 结果:Trvdizrrvj ✅ 与输出一致!
不废话了,上代码!