常見物件-判斷一個字串是否對稱案例

ZHOU_VIP發表於2017-05-14

package cn.itcast_07;

import java.util.Scanner;

/*
 * 判斷一個字串是否是對稱字串
 * 例如"abc"不是對稱字串,"aba"、"abba"、"aaa"、"mnanm"是對稱字串
 * 
 * 分析:
 * 		判斷一個字串是否是對稱的字串,我只需要把
 * 			第一個和最後一個比較
 * 			第二個和倒數第二個比較
 * 			...
 * 		比較的次數是長度除以2。
 */
public class StringBufferTest4 {
	public static void main(String[] args) {
		// 建立鍵盤錄入物件
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入一個字串:");
		String s = sc.nextLine();

		// 方法一:一個一個的比較
		boolean b = isSame(s);
		System.out.println("b:" + b);
		
		//方法二:用字串緩衝區的反轉功能
		boolean b2 = isSame2(s);
		System.out.println("b2:"+b2);
	}
	
	public static boolean isSame2(String s) {
		//如果反轉後和反轉前是一樣的,說明是同一個
		return new StringBuffer(s).reverse().toString().equals(s);
	}
	

/*	public static boolean isSame(String s) {
		// 把字串轉成字元陣列
		char[] chs = s.toCharArray();

		for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
			if (chs[start] != chs[end]) {
				return false;
			}
		}

		return true;
	}*/

	public static boolean isSame(String s) {
		boolean flag = true;

		// 把字串轉成字元陣列
		char[] chs = s.toCharArray();

		for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
			if (chs[start] != chs[end]) {
				flag = false;
				break;
			}
		}

		return flag;
	}
}




相關文章