加油,打工人,今天又是美好的一天

十四郎君

一日不思量,也攒眉千度

使用 Java 判断回文

1. 什么是回文
“回文串”是一个正读和反读都一样的字符串,如“level”或者“noon”等就是回文串。
2. Java 实现
  • 字符串倒置后逐一比较法
import java.util.Scanner;

public class Palindrome {
    public static boolean isPalindrome(String str){
        StringBuffer stringBuffer = new StringBuffer(str);
        //把字符串反转
        stringBuffer.reverse();
        int count =0;
        for (int i = 0; i < str.length(); i++) {
           if(str.charAt(i) == stringBuffer.charAt(i)){
               count++; //统计相同字符的个数
           }
        }
        if(count == str.length()){
            return true;
        }else{
            return false;
        }
    }

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要检验的回文: ");
        String str = input.nextLine();
        if(isPalindrome(str)){
            System.out.println(str + " 是回文");
        }else{
            System.out.println(str + " 不是回文");
        }
        input.close();
    }
}
  •  字符串首尾元素对比法
import java.util.Scanner;
public class Palindrome {

    public static boolean isPalin(String data) {
        int len = data.length();
        for (int i = 0; i < len/2; i++) {
            if (data.charAt(i) != data.charAt(len-1-i)) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // hasNext 判断是否有输入的数据,只要有输入的数据就执行扫描和输出
        while (input.hasNext()) {
            System.out.println("请输入字符串: ");
            String data = input.nextLine();
            if (isPalin(data)) {
                System.out.println(data + "是回文");
            } else {
                System.out.println(data + "不是回文");
            }
        }
        input.close();
    }
  • 利用入栈、出栈字符串的一半字符和剩余一半元素进行对比(借助数据结构---栈)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Palindrome {
    public static boolean isPalindrome(String str) {
        // 堆栈一
        List<Character> stack1 = new ArrayList<Character>();
        // 堆栈二
        List<Character> stack2 = new ArrayList<Character>();
        // 字符串长度的一半
        int haflen = str.length() / 2;
        for (int i = 0; i < haflen; i++) {
            // 字符进栈
            stack1.add(str.charAt(i));
            // 倒序进栈
            stack2.add(str.charAt(str.length() - i - 1));
        }
        // 标识符
        boolean bFlag = true;
        // 出栈并比较
        for (int i = haflen - 1; i >= 0; i--) {
            if (stack1.remove(i) != stack2.remove(i)) {
                bFlag = false;
                break;
            }
        }
        // 返回比对结果
        return bFlag;
    }
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要检验的回文: ");
        String str = input.nextLine();
        if(isPalindrome(str)){
            System.out.println(str + " 是回文");
        }else{
            System.out.println(str + " 不是回文");
        }
        input.close();
    }
}

 

posted @ 2021-01-19 23:38  十郎  阅读(873)  评论(0编辑  收藏  举报