java实现简单回文算法

算法要求

编写一个程序,判断一个字符串是否为“回文”。回文串:字符串字符从前往后与从后往前一致(中心对称)。

算法思路

首先将字符串等分左右两块,然后依次对称比较每一对字符是否相同

代码实现

import java.util.Scanner;

public class Palindrome {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (!sc.hasNext("###")) {
            String data = sc.next();
            if (isPalin(data)) {
                System.out.println("yes");
            } else {
                System.out.println("no");
            }
        }
        sc.close();
    }

    public static boolean isPalin(String data) {
        int len = data.length();
        for (int i = 0; i < len/2; i++) {
            if (data.charAt(i) != data.charAt(len-1-i)) {
                return false;
            }
        }
        return true;
    }

}

测试样例

abc
no
qwq
yes
abcdcba
yes

小知识

1、equals和==

==运算符执行规则

  • 如果是基本数据类型的变量,则比较他们的值
  • 如果是引用类型的变量,则比较他们所指向的对象的地址

equals方法执行规则

  • 原始的equals方法,比较的是引用类型的变量所指向的对象的地址
  • String、Date等类对equals方法进行了重写,此时比较的是所指向的对象的内容

ps:equals方法是基类Object中的方法,用来比较两个对象的引用是否相等,即是否指向同一个对象

探究:浅谈Java中的equals和== https://www.cnblogs.com/dolphin0520/p/3592500.html

2、sc.hasNext()实现多组输入

!sc.hasNext("###")  // 匹配 ### 返回true,然后取非运算。即以 ### 作为停止输入的命令

hasNext()和next()效果其实是一样的,系统都会等待输入下一个字符,只是返回值不同,hasNext()返回true,next()返回输入的字符。如果hasNext()有参数则当下一个字符与参数值匹配时才会返回true。

探究:Scanner的hasNext()方法 https://blog.csdn.net/gao_zhennan/article/details/80562548

转载于:https://www.cnblogs.com/lanselove/p/10974550.html

你可能感兴趣的:(java实现简单回文算法)