用户输入一串字符串,Java程序实现对该字符串判断。
对回文判断主要分为三种:1、纯数字 2、纯字母 3、混合型
1、纯数字
将输入的字符串翻转,之后分别转换成int形式,比较两个整数大小,大小相同则为回文。
2、纯字母
则是第一个字母和最后一个字母比较,前段往后推,后端往前推。
3、混合型
混合型考虑是否保留其中的标点符号,如果不保存,则只对字母数字进行比较。
import java.util.Scanner;
public class PalindromeTester {
//---------------------------------------------
//Tests strings to see if they are palindromes.
//---------------------------------------------
public static void main(String[] args){
String str,str2, another = "y", type = "3",lose = "n";
int left,right,a,b,c;
Scanner scan = new Scanner (System.in);
while(another.equalsIgnoreCase("y")){//allow y or Y
System.out.println("Please enter a string type(1/2/3):1.Digital 2.Letter 3.Mixture");
type = scan.nextLine();
a = Integer.parseInt(type);
System.out.println("Enter a potential palindrome:");
str = scan.nextLine();
left = 0;
right = str.length() - 1;
switch (a){
case 1:
str2 = new StringBuffer(str).reverse().toString();
b = Integer.parseInt(str);
c = Integer.parseInt(str2);
if(b == c)
System.out.println("That string IS a palindrome.");
else
System.out.println("That string is NOT a palindrome.");
break;
case 2:
while (str.charAt(left) == str.charAt(right) && left < right){
left++;
right--;
}
System.out.println();
if(left < right)
System.out.println("That string is NOT a palindrome.");
else
System.out.println("That string IS a palindrome.");
break;
case 3:
System.out.println("Only alphanumeric letters are retained(y/n)?");
lose = scan.nextLine();
while (lose.equalsIgnoreCase("n")){
while (str.charAt(left) == str.charAt(right) && left < right){
left++;
right--;
}
System.out.println();
if(left < right)
System.out.println("That string is NOT a palindrome.");
else
System.out.println("That string IS a palindrome.");
break;
}
while (lose.equalsIgnoreCase("y")){
str = str.replaceAll("[^0-9a-zA-z]","");
left = 0;
right = str.length() - 1;
while (str.charAt(left) == str.charAt(right) && left < right){
left++;
right--;
}
System.out.println();
if(left < right)
System.out.println("That string is NOT a palindrome.");
else
System.out.println("That string IS a palindrome.");
break;
}
break;
}
System.out.println();
System.out.println("Test another palimdrome(y/n)?");
another = scan.nextLine();
}
}
}
初次发文,如有更好建议,欢迎一起探讨。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)