A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 695212308 中级黑马   /  2016-8-12 20:08  /  515 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
        }
}

3 个回复

倒序浏览
没必要这么麻烦
for(int i=0,;i<arr.length / 2;i++){
                        if(arr[i]!=arr[f]){
                                return false;
                        }
                }
这样就可以了,少定义了一个参数,遍历一半数组就行了
回复 使用道具 举报
Maroon 发表于 2016-8-12 23:27
没必要这么麻烦
for(int i=0,;i

if(arr!=arr[arr.length - 1 - i])
判断语句忘改了...
回复 使用道具 举报
我擦,这个挺难啊,牛逼啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马