1 问题描述

给定一个字符串,如何判断这个字符串是否是回文串?

所谓回文串,是指正读和反读都一样的字符串,如madam、我爱我等。

2 解决方案

解决上述问题,有两种方法可供参考:

(1)从字符串两头往中间扫;

(2)从字符串中间往两头扫。

具体代码如下:

package com.liuzhen.string_1;

import java.util.Scanner;

public class StringPalindrome {
//方法1:两头往中间扫
public boolean IsPalindrome1(String A){
char[] arrayA = A.toCharArray();
int top = 0;
int end = arrayA.length-1;
if(A.equals("") || A.equals(null)) //非法输入
return false;
while(top < end){
if(arrayA[top++] != arrayA[end--])
return false;
}
return true;
} //方法2:中间往两头扫
public boolean IsPalindrome2(String A){
char[] arrayA = A.toCharArray();
int lenA = arrayA.length;
int mid = lenA/2;
int front; //前半部分
int back; //后半部分
if(lenA % 2 == 0){ //当字符串长度为偶数时
front = mid-1;
back = mid;
}
else{
front = mid -1;
back = mid + 1;
}
if(A.equals("") || A.equals(null))
return false;
while(front >= 0 && back < lenA){
if(arrayA[front--] != arrayA[back++])
return false;
}
return true;
} public static void main(String[] args){
StringPalindrome test = new StringPalindrome();
Scanner in = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String A = in.nextLine();
if(test.IsPalindrome1(A))
System.out.println("使用方法1判断结果为,输入字符串是回文字符串");
else
System.out.println("使用方法1判断结果为,输入字符串不是回文字符串");
if(test.IsPalindrome2(A))
System.out.println("使用方法2判断结果为,输入字符串是回文字符串");
else
System.out.println("使用方法2判断结果为,输入字符串不是回文字符串");
}
}

运行结果:

请输入一个字符串:
我爱我
使用方法1判断结果为,输入字符串是回文字符串
使用方法2判断结果为,输入字符串是回文字符串 请输入一个字符串:
我爱你
使用方法1判断结果为,输入字符串不是回文字符串
使用方法2判断结果为,输入字符串不是回文字符串 请输入一个字符串:
abba
使用方法1判断结果为,输入字符串是回文字符串
使用方法2判断结果为,输入字符串是回文字符串

Java实现回文判断的更多相关文章

  1. JAVA关于回文判断的实现

    (一). 设计思想: 首先输入字符串,然后判断长度若长度为0或1则输出TRUE若长度大于一则进行判断, 若符合条件则输出TRUE反之输出FALSE. (二)程序源代码 import java.util ...

  2. 链表回文判断(基于链表反转)—Java实现

    学习数据结构的时候遇到一个经典的回文链表问题 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 如果有链表反转的基础,实现链表回文判断就简单的多,如 ...

  3. 算法笔记_030:回文判断(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 给定一个字符串,如何判断这个字符串是否是回文串? 所谓回文串,是指正读和反读都一样的字符串,如madam.我爱我等. 2 解决方案 解决上述问题,有 ...

  4. java基础——回文数判断

    /** * 题目描述: * 有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字.编写一个函数,判断某数字是否是回文数字. * 要求实现方法: * ...

  5. 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)

    对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度. 由于空间复杂度的要求,需要就地操作链表,不能开辟多余 ...

  6. 字符串回文判断 js练习

    / 判断一个字符是否为回文,abcba是回文,. /*function fn2(str){ var str1=''; for(var i=str.length-1;i>=0;i--){ str1 ...

  7. 【数据结构】<栈的应用>回文判断

    通过栈与队列相关内容的学习,我们知道,栈是"先进后出"的线性表,而队列是"先进先出"的线性表.可以通过构造栈与队列来实现在这一算法.将要判断的字符序列依次压栈和 ...

  8. Java 9.回文数

    给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false .回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.    例如,121 是回文,而 123 不是. ...

  9. JAVA求回文数

    Manacher算法(马拉车算法)时间复杂度O(n) 用过中心检测法(就是上面说的O(n2) O(n^2)O(n )的算法)的都知道对于奇数回文串和偶数回文串的处理是不同的,奇数回文串有2n+1 2n ...

随机推荐

  1. 01python基础入门

    一.了解python 1.总结一句话:简单易用,相对于java易学,容易上手.如果你不知道学什么语言或者先入门的话,这个是首选, 毕竟小学生也开始学了.对你有用或者是你的爱好就坚定的开始学吧! 2.下 ...

  2. js使用经验--if...else简化

    目的 在项目中,if else语句如果用得很多,特别是嵌套,代码不美观,阅读性不好.所以的话,用其他的方式简化替换if...else...就很有必要. 简化的作用就是赠人玫瑰,手留余香.对自己对项目对 ...

  3. SpringMvc上传图片及表单提交(单文件+实体类参数提交)

    前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...

  4. ClickHouse基本操作(二)

    一.先来说一下,ClickHouse为啥快 MySQL单条SQL是单线程的,只能跑满一个core,ClickHouse相反,有多少CPU,吃多少资源,所以飞快: ClickHouse不支持事务,不存在 ...

  5. 迟早要知道的JS系列之常用数组方法

    常用数组方法 一.不会改变原始数组的方法: 即访问方法,下面的这些方法绝对不会改变调用它们的对象的值,只会返回一个新的数组或者返回一个其它的期望值. 1. concat() ** 语法:** Java ...

  6. C# 生成log文件

    public void WriteLog(string strLog) { string sFilePath = AppDomain.CurrentDomain.BaseDirectory + &qu ...

  7. NPOI导入excel为datatable (xls xlsx xlsm)

    使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中 http://www.cnblogs.com/songrun/p/3547738.html NPOI 2.0教程 – 自动 ...

  8. springboot使用redis的keyspace notifications 实现定时通知

    简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本 ...

  9. 苏浪浪 201771010120 《面向对象程序设计(java)》第9周学习总结

    实验九异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2. ...

  10. mvc的视图渲染方式

    ModelAndView ModelAndView vm = new ModelAndView(); //封装要显示在试图上的数据 vm.addObject("msg"," ...