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判断结果为,输入字符串是回文字符串

最新文章

  1. wx.onMenuShareTimeline使用注意事项
  2. Bzoj1176 [Balkan2007]Mokia
  3. Git &amp; GitHub
  4. 服务器ssh登录提示“Permission denied, please try
  5. iOS 网络请求中的challenge
  6. 转载--配置WAMP开发环境
  7. response妙用
  8. linux前四天学习笔记
  9. 对于分支界限法的理解(补出门门票-week13,结对伙伴对我提的问题的答案)
  10. 2. struct A 和 typedef struct A
  11. Alpha冲刺3
  12. 了解JavaScript(1)- Hello World
  13. 【小程序云开发入门】quickStart
  14. BLACKPYTHON学习(一)
  15. python之web框架(2):了解WSGI接口
  16. fstream的使用方法
  17. Codeforces Round #418 (Div. 2)D
  18. Gym-101873D-Pants On Fire(闭包)
  19. 11.6NOIP模拟赛解题报告
  20. bzoj1057: [ZJOI2007]棋盘制作(悬线法)

热门文章

  1. [codeforces-315D div2]模拟
  2. 关于日常操作中sql的性能
  3. 关于redis内存分析,内存优化
  4. python--常用模块calendar
  5. equals(), &quot;== &quot;,hashcode() 详细解释
  6. MySQL银行ATM存取款机系统(需求分析)
  7. Django之请求生命周期
  8. day01:判断与循环(20170213)
  9. 【JVM】堆区域的一个详细了解并附带调优案例
  10. 第二章-数据绑定和第一个AnglarJS Web应用