久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java采用3種方式判斷用戶輸入的字符串是否為回文

 匆匆那哖 2015-11-01

一,、描述

回文的定義:"回文數(shù)" 就是正讀倒讀都一樣的整數(shù),。如奇數(shù)個數(shù)字:98789, 這個數(shù)字正讀是98789,倒讀也是98789;偶數(shù)個數(shù)字3223也是回文數(shù),。

我們今天將回文數(shù)擴(kuò)展為字母和數(shù)字組合回文,,如adgu6776ugda也是回文,我們采用三種方式判斷這種類型的字符串是否為回文:

1.調(diào)用StringBuffer類對象的reverse()方法,,將字符串翻轉(zhuǎn)后與之前的字符串比較,,如果相等則為回文,反之亦然,;

2.采用low和high兩個變量分別對應(yīng)字符串對稱位置的index,,所有對稱位置的字符都相等則為回文,反之亦然,;

3.使用一個變量i來表示字符串的下標(biāo),,找出對稱位置的index關(guān)系來判斷字符串是否為回文。

二,、源代碼

import java.util.Scanner;
import javax.swing.JOptionPane;


/**
 * 回文描述:正著讀過去和倒著讀回來的字符串序列相同則為回文,,如:1h3gkg3h1是回文
 * @author tong
 *
 */
public class PalindromeIgnoreNonAlphanumeric {
    public static void main(String[] args) {
     //可以使用javax.swing.JOptionPane類中的showInputDialog()方法提示用戶輸入字母或者數(shù)字串
        String s = JOptionPane.showInputDialog("請輸入輸入字符串:"); 
        //調(diào)用isPalindromeByBuffer()方法
        String output = s + (isPalindromeByBuffer(s)?"是":"不是")+"回文。";
        JOptionPane.showMessageDialog(null, output);
       
        s = JOptionPane.showInputDialog("請輸入輸入字符串:");
        //調(diào)用isPalindromeByCharAt()方法
        output = s + (isPalindromeByCharAt(s)?"是":"不是")+"回文,。";     
        JOptionPane.showMessageDialog(null, output);
       
        //使用Scanner(System.in)方法提示用戶輸入字符串
  System.out.println("請輸入輸入字符串:");
  Scanner in=new Scanner(System.in);
  String strOrigin=in.next(); 
  //調(diào)用isPalindromeByCharAtSingle()方法
  System.out.print(strOrigin + (isPalindromeByCharAtSingle(s)?"是":"不是")+"回文,。");

 


    }
   
    /**
    * 通過調(diào)用StringBuffer的對象的reverse()方法,來判斷翻轉(zhuǎn)前后字符串是否相等,,確定是否為回文
    * @param s
    * @return
    */
    public static boolean isPalindromeByBuffer(String s) {
        String strOrigin = filterLetterAndDigit(s);
        //將strOrigin作為輸入?yún)?shù),,構(gòu)造一個StringBuffer對象
        StringBuffer strBuf = new StringBuffer(strOrigin);
        //調(diào)用StringBuffer對象自帶的reverse()方法進(jìn)行字符串翻轉(zhuǎn),,最后調(diào)用toString()返回一個String類型字符串
        String strAfterReverse = strBuf.reverse().toString(); 
        //通過equals()方法判斷原來的字符串和翻轉(zhuǎn)后的字符串是否相等,來確定是否為回文
        return strOrigin.equals(strAfterReverse);
    }
   
    /**
    * 通過字符串中的對稱位置字符串是否相同來判斷是否為回文,這里用了兩個變量low和high來分別對應(yīng)字符串對稱位置的index
    * @param s
    * @return
    */
    public static boolean isPalindromeByCharAt(String s) {
     //low和high分別對應(yīng)字符串對稱位置的index,,以此來判斷所有對稱位置字符是否相同
        int low = 0;
        int high = s.length() - 1;
        while (low < high) {
            if (s.charAt(low) != s.charAt(high))
                return false;  // 不是回文
            low++;
            high--;
        }
        return true;          // 是回文
    }
   
    /**
    * 通過字符串中的對稱位置字符串是否相同來判斷是否為回文,這里用了一個變量i來對應(yīng)字符串對稱位置的index
    * @param s
    * @return
    */
    public static boolean isPalindromeByCharAtSingle(String s) {
     //通過對稱下標(biāo)的關(guān)系使用一個變量即可判斷所有對稱位置字符是否相同
     for(int i=0;i<s.length()/2;i++){
      //只有當(dāng)前一半字符串和后一半字符串對應(yīng)位置相同,,那么才是回文,只有有一個對稱位置的字符不同就不是回文
      if(s.charAt(i)!=s.charAt(s.length()-i-1)){
       return false;
      }
     }
       
        return true; 
    }
   
    /**
    * 通過調(diào)用Character.isLetterOrDigit(Char char)過濾字母或者數(shù)字,,判斷字母或者數(shù)字的組合是否為回文
    * @param s
    * @return String
    */
    public static String filterLetterAndDigit(String s) {
        StringBuffer strBuf = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isLetterOrDigit(s.charAt(i))) {
             //調(diào)用StringBuffer的append(Char char)方法,將輸入的字母或者數(shù)字加入其中
                strBuf.append(s.charAt(i));
            }
        }
        //返回String類型,,需要將StringBuffer轉(zhuǎn)換為String,需要調(diào)用StringBuffer對象的toString()方法
        return strBuf.toString();
    }
   
}

本文永久更新鏈接地址http://www./Linux/2015-03/115013.htm

linux

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多