📅  最后修改于: 2023-12-03 15:12:43.360000             🧑  作者: Mango
有一种字符串加密算法,它将字符串中每个字符按照字母表顺序向后移动三位,即'a'变为'd','z'变为'c'。现给定一个加密后的字符串,请你输出解密后的原字符串。
输入一行,为经过加密的字符串。
输出一行,为解密后的原字符串。
dwwdfn
attack
一个字符向后移动三位,假设字符为ch,则解密后的字符为:
char decrypted_ch = (ch - 'a' + 23) % 26 + 'a';
需要注意的是,当 ch > 'z' 时,需要减去26,否则会得到不正确的结果。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String encryptedString = scanner.nextLine();
char[] chars = encryptedString.toCharArray();
for (int i = 0; i < chars.length; i++) {
char encryptedChar = chars[i];
char decryptedChar = (char) ((encryptedChar - 'a' + 23) % 26 + 'a');
System.out.print(decryptedChar);
}
}
}
时间复杂度:O(n),其中n为字符串的长度。
空间复杂度:O(n),在java中,字符串和字符数组都占据O(n)的空间。
本题考察了对加密与解密的基本概念以及ASCII字符集的运用,算法思路简单,实现也不困难。