之前没有发现这是一本C语言编写得书,但本人还未学习过C语言,只能尝试用java实现书中的代码,在此记录学习这本书的历程。
本人新手菜鸟,能力有限,如果有误或者有改进的地方欢迎指出,谢谢\(▔▽▔)/。
题目:输入一个字符串,判断它是否是回文串以及镜像串。输入字符串保证不含数字0.所谓回文串就是翻转以后和原串相同。所谓镜像串就是左右镜像之后与原串相同。
样例输入:
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
样例输出:
NOTTAPALINDROME -- is not a palindrome.
ISAPALINILAPASI -- is a regular palindrome.
2A3MEAS -- is a mirrored string.
ATOYOTA -- is a mirrored palindrome.
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
String check = "A 3 HIL JM O 2TUVWXY51SE Z 8 "; //构建镜像表
String []msg = {"is not a palinrome or mirrored string","is a mirrored string","is a regular palindrome","is a mirrored palindrome"};
while(input.hasNextLine()) {
int key1 = 1;
int key2 = 1;
String line = input.nextLine();
for(int i = 0;i < line.length()/2;i++) {
if(line.charAt(i) != line.charAt(line.length() - i - 1)) { //判断回文数
key1 = 0;
}
if(check.charAt(isalpha(line.charAt(i))) != line.charAt(line.length() - i - 1)) {
key2 = 0;
} //判断镜像数
if(check.charAt(isalpha(line.charAt(i))) != line.charAt(line.length() - i - 1)) {
key2 = 0;
}
}
System.out.println(line + " -- " + msg[key1*2 + key2]);
}
}
public static int isalpha(char a) { //例题中的char r(char ch),用于判断字符还是数字
if(a >= 65) {
return a - 'A';
}
return a - '0' + 25;
}