黑马程序员技术交流社区

标题: 判断字符串是不是回文, [打印本页]

作者: vincentgood    时间: 2014-4-21 12:07
标题: 判断字符串是不是回文,
所谓回文,就是abcdedcba,或者123454321,这样的,下面这个方法应该 可以做到
//判断字符串是否是回文的方法
public static boolean isPalindrome(final CharSequence value) {
    final int len = value.length();
    if (len <= 1) {
        return false;
    }
    for (int count = len / 2, i = 0, j = len - 1; i < count; i++, j--) {
        if (value.charAt(i) != value.charAt(j)) {
            return false;
        }
    }
    return true;
}

作者: 忘川    时间: 2014-4-21 23:00
  1. //回文数就是正序等于反序,所以这样的思路也可以
  2. //org为原始数组
  3. public static boolean IsHuiwen(String[] org)
  4. {
  5.         //获取一个原始数组的反序存入after数组
  6.         String[] after=new String[org.length];
  7.         int j=0;
  8.         for(int i=org.length-1;i>=0;i--,j++)
  9.         {
  10.                 after[j]=org[i];
  11.         }
  12.         for(int i=0;i<org.length;i++)
  13.         {
  14.        if(org[i]!=after[i])//有一个字符不等,就相当于肯定不是回文,直接返回false
  15.                 {
  16.                         return false;
  17.                 }
  18.         }
  19.         return true;
  20. }
复制代码

作者: 悠然丶    时间: 2014-4-21 23:46
本帖最后由 悠然丶 于 2014-4-21 23:49 编辑

所谓回文,就是abcdedcba,或者123454321,这样的.
//你会发现回文就是对称.....
我可以说个更简单的么?  
public static boolean isHuiwen(String str) {
                StringBuffer sb1 = new StringBuffer();  //定义一个容器对字符串进行操作
                sb1 = sb1.append(str);                  //先把字符串装进容器
                sb1 = sb1.reverse();//然后把字符串进行反转
                String s2 = sb1.substring(0); //反转完成之后把字符串截取出来
                return str.equals(s2);      //让原来的字符串和反转后的字符串相比较   
        }
作者: Silent_memory    时间: 2014-4-22 23:06
本帖最后由 Silent_memory 于 2014-4-22 23:08 编辑

int count = len / 2;for (int  i = 0, int  j = len - 1; i < count; i++, j--) {
}
这样小改动下能更容易阅读和理解





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