JAVA算法:回文字符串相关问题详解(回文字符串总结)
Q1. 编写一个工具方法判断给定的字符串是否为回文字符串
例如:给定一个字符串“aabbaa”,判断该字符串是否为回文字符串。
算法设计如下:
/*
* 给定一个字符串,判断该字符串是否为一个回文字符串
* start表示需要判断的起始位置
* end表示需要判断的结束位置
*/
public static boolean isPalindrome(String input, int start, int end) {
while (start < end) {
if (input.charAt(start++) != input.charAt(end--))
return false;
}
return true;
}
完整的测试代码如下:
package com.bean.algorithm.palindromic;
public class PalindromicUtils {
/*
* 给定一个字符串,判断该字符串是否为一个回文字符串
* start表示需要判断的起始位置
* end表示需要判断的结束位置
*/
public static boolean isPalindrome(String input, int start, int end) {
while (start < end) {
if (input.charAt(start++) != input.charAt(end--))
return false;
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="aabbaa ";
//String str="fafadabcbafdfdfas";
//注意去掉字符串前后的空格
str=str.trim();
boolean flag=isPalindrome(str,0,str.length()-1);
System.out.println("Flag is: "+flag);
}
}
程序运行结果;
Flag is: true
Q2. 求给定字符串中的最长回文子串
输入一个字符串,求出其中最长的回文子串。
子串的含义是:在原串中连续出现的字符串片段。<