1. 分析:判断一个字符串是否是一个对称的字符串,我们只需要把字符串的第1个字符和最后1个字符,第2个字符和倒数第2个字符,……
比较的次数是长度除以2.
方法1:通过取取索引对应值来进行一一比对
方法2:通过StringBuffer的取反方法reverse获取其逆向值
2. 案例演示:
1 package cn.itcast_07; 2 3 import java.util.Scanner; 4 5 /* 6 * 判断一个字符串是否是对称字符串 7 * 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串 8 * 9 * 分析: 10 * 判断一个字符串是否是对称的字符串,我只需要把 11 * 第一个和最后一个比较 12 * 第二个和倒数第二个比较 13 * ... 14 * 比较的次数是长度除以2。 15 */ 16 public class StringBufferTest4 { 17 public static void main(String[] args) { 18 // 创建键盘录入对象 19 Scanner sc = new Scanner(System.in); 20 System.out.println("请输入一个字符串:"); 21 String s = sc.nextLine(); 22 23 // 一个一个的比较 24 boolean b = isSame(s); 25 System.out.println("b:" + b); 26 27 //用字符串缓冲区的反转功能 28 boolean b2 = isSame2(s); 29 System.out.println("b2:"+b2); 30 } 31 32 public static boolean isSame2(String s) { 33 return new StringBuffer(s).reverse().toString().equals(s); 34 } 35 36 37 // public static boolean isSame(String s) { 38 // // 把字符串转成字符数组 39 // char[] chs = s.toCharArray(); 40 // 41 // for (int start = 0, end = chs.length - 1; start <= end; start++, end--) { 42 // if (chs[start] != chs[end]) { 43 // return false; 44 // } 45 // } 46 // 47 // return true; 48 // } 49 50 public static boolean isSame(String s) { 51 boolean flag = true; 52 53 // 把字符串转成字符数组 54 char[] chs = s.toCharArray(); 55 56 for (int start = 0, end = chs.length - 1; start <= end; start++, end--) { 57 if (chs[start] != chs[end]) { 58 flag = false; 59 break; 60 } 61 } 62 63 return flag; 64 } 65 }
程序的运行结果如下: