经典算法(一)之回文

来源:互联网 发布:chunglim淘宝 编辑:程序博客网 时间:2024/06/06 23:55

回文,把相同的词汇或句子 ,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文。
例如:
ABCDDCBA就是一个回文,ABA也是。
往往求一段字符串中的最长回文,是最常见的题型。

package com.zl.spider.test;import java.util.Scanner;/** * 求字符串最长回文算法 * * @author zl * @time 2017.05.03 */public class PalindromicSubstring {    private static String answer;    private static int lo, maxlen;    public static void main(String[] args) {        System.out.println("请输入字符串:");        Scanner sc = new Scanner(System.in);        String str = sc.next();        answer = longestPalindromicSubstring(str);        System.out.println("最长回文为:" + answer);    }    private static String longestPalindromicSubstring(String str) {        int len = str.length();        if (len < 2) {            return str;        }        for (int i = 0; i < len - 1; i++) {            extendPalindrome(str, i, i);            extendPalindrome(str, i, i + 1);        }        return str.substring(lo, lo + maxlen);    }    private static void extendPalindrome(String str, int j, int k) {        while (j >= 0 && k < str.length() && str.charAt(j) == str.charAt(k)) {            j--;            k++;        }        if (maxlen < k - j - 1) {            lo = j + 1;            maxlen = k - j - 1;        }    }}

运行结果:

这里写图片描述


每天一个算法,提高自己


0 0
原创粉丝点击