给定一个字符串,找出其中最长的回文串

回文

,是指数或者字符串具有首尾回环性质,从后向前按位颠倒后与原文一样。首尾回环的数字就是回文数,如:121,12321;首尾回环的字符串就是回文串,如:’madam’。

代码

import java.util.LinkedList;
import java.util.List;
/**
 * 给定一个字符串,找出最长的回文字符串
 * @author SongHongWei
 *
 */
public class Client {

    public static void main(String[] args) {
        String str = "11234432112345677654321123456789987654321";
        Client c = new Client();
        if (c.isPlalindromeStr(str)) {
            System.out.println(str);
        } else {
            c.printPlanindromeStr(str, str.length() - 2);
        }
    }

    /**
     * 判断制定字符串是不是回文字符串
     * 
     * @param str
     * @return
     */
    public boolean isPlalindromeStr(String str) {
        char[] strArray = str.toCharArray();
        int i = 0;
        int j = str.length() - 1;
        while (i <= j) {
            if (strArray[i] == (strArray[j])) {
                i++;
                j--;
            } else {
                return false;
            }
        }
        return true;
    }

    /**
     * 获取指定字符串长度为length的所有子串
     * 
     * @param str
     * @param length
     * @return
     */
    public List<String> getAllSubString(String str, int length) {
        List<String> listStr = new LinkedList<String>();
        // int count = str.length() - length;
        int len = str.length();
        int i = 0;
        while (i + length <= len) {
            listStr.add(str.substring(i, i + length));
            i++;
        }
        return listStr;
    }

    /**
     * 打印出回文字符串
     * 
     * @param str
     * @param length
     */
    public void printPlanindromeStr(String str, int length) {
        boolean flag = false;
        List<String> allSubString = getAllSubString(str, length);
        for (String string : allSubString) {
            if (isPlalindromeStr(string)) {
                System.out.println(string);
                System.out.println(string.length());
                flag = true;
                break;
            }
        }
        if (!flag) {
            printPlanindromeStr(str, length - 1);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u010859650/article/details/82745448
今日推荐