黑马程序员技术交流社区

标题: 判断字符串是否对称 [打印本页]

作者: 695212308    时间: 2016-8-12 20:08
标题: 判断字符串是否对称
import java.util.Scanner;

/*
*判断一个字符串是否是对称字符串
*例如"abc"不是对称字符串,"aba","abba","mnanm" 是 对称字符串
*
* 分析:
*                 判断一个字符串是否是对称的字符串, 只需要把
*                         第一个和最后一个比较
*                         第二个和倒数第二个比较
*                         .....
*          比较的次数是长度除以2
*/
public class StringSubfferTest {
        public static void main(String[] args) {
                //创建键盘录入对象
                Scanner in=new Scanner(System.in);
                System.out.println("请输入一个字符串");
                String s=in.nextLine();
                //普通方法
                boolean s2=isSame(s);
                System.out.println(s2);
                //用字符串缓冲区的反转功能
                boolean s3=isSame2(s);
                System.out.println(s3);
               
        }
        //用字符串缓冲区的反转功能
        public static boolean isSame2(String s){
                return new StringBuffer(s).reverse().toString().equals(s);
                /*程序步骤:
                        先创建缓冲区对象,然后把S里面的值赋值进去
                        再把字符串反转后转换成String类型
                        在与之前传进来的S比较内容是否一致*/
        }
        //普通方法
        public static boolean isSame(String s){
                //把字符串转换为字符数组
                char[] arr=s.toCharArray();
                //比较是否对称
                for(int i=0,f=arr.length-1;i<=f;i++,f--){
                        if(arr[i]!=arr[f]){
                                return false;
                        }
                }
                return true;
        }
}
作者: Maroon    时间: 2016-8-12 23:27
没必要这么麻烦
for(int i=0,;i<arr.length / 2;i++){
                        if(arr[i]!=arr[f]){
                                return false;
                        }
                }
这样就可以了,少定义了一个参数,遍历一半数组就行了
作者: Maroon    时间: 2016-8-12 23:28
Maroon 发表于 2016-8-12 23:27
没必要这么麻烦
for(int i=0,;i

if(arr!=arr[arr.length - 1 - i])
判断语句忘改了...
作者: zztierlie    时间: 2016-8-13 10:06
我擦,这个挺难啊,牛逼啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2