算法筆記_030:回文判斷(Java)


目錄

1 問題描述

2 解決方案

 


1 問題描述

給定一個字符串,如何判斷這個字符串是否是回文串?

所謂回文串,是指正讀和反讀都一樣的字符串,如madam、我愛我等。

 

 


2 解決方案

解決上述問題,有兩種方法可供參考:

(1)從字符串兩頭往中間掃;

(2)從字符串中間往兩頭掃。

具體代碼如下:

package com.liuzhen.string_1;

import java.util.Scanner;

public class StringPalindrome {
    //方法1:兩頭往中間掃
    public boolean IsPalindrome1(String A){
        char[] arrayA = A.toCharArray();
        int top = 0;
        int end = arrayA.length-1;
        if(A.equals("") || A.equals(null))    //非法輸入
            return false;
        while(top < end){
            if(arrayA[top++] != arrayA[end--])
                return false;
        }
        return true;
    }
    
    //方法2:中間往兩頭掃
    public boolean IsPalindrome2(String A){
        char[] arrayA = A.toCharArray();
        int lenA = arrayA.length;
        int mid = lenA/2;
        int front;         //前半部分
        int back;          //后半部分
        if(lenA % 2 == 0){   //當字符串長度為偶數時
            front = mid-1;
            back = mid;
        }
        else{
            front = mid -1;
            back = mid + 1;
        }
        if(A.equals("") || A.equals(null))
            return false;
        while(front >= 0 && back < lenA){
            if(arrayA[front--] != arrayA[back++])
                return false;
        }
        return true;
    }
    
    public static void main(String[] args){
        StringPalindrome test = new StringPalindrome();
        Scanner in = new Scanner(System.in);
        System.out.println("請輸入一個字符串:");
        String A = in.nextLine();
        if(test.IsPalindrome1(A))
            System.out.println("使用方法1判斷結果為,輸入字符串是回文字符串");
        else
            System.out.println("使用方法1判斷結果為,輸入字符串不是回文字符串");
        if(test.IsPalindrome2(A))
            System.out.println("使用方法2判斷結果為,輸入字符串是回文字符串");
        else
            System.out.println("使用方法2判斷結果為,輸入字符串不是回文字符串");
    }
}

 運行結果:

請輸入一個字符串:
我愛我
使用方法1判斷結果為,輸入字符串是回文字符串
使用方法2判斷結果為,輸入字符串是回文字符串


請輸入一個字符串:
我愛你
使用方法1判斷結果為,輸入字符串不是回文字符串
使用方法2判斷結果為,輸入字符串不是回文字符串


請輸入一個字符串:
abba
使用方法1判斷結果為,輸入字符串是回文字符串
使用方法2判斷結果為,輸入字符串是回文字符串

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM