每日一练(回文串)

题目:输入一个字符串,计算最长回文串!
 

package 最长回文串;

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String res =  longestHuiWen(str);
        System.out.println( res);
    }
    public static String longestHuiWen(String str){
        int length = str.length();
        if (length<2){
            return str;
        }
        int maxLength = 1;
        String res = str.substring(0,1);
        // i为起始位置
        for (int i = 0; i < length-1; i++) {
            for (int j = i+1; j < length; j++){
                if (j-i+1>maxLength && valid(str,i,j)){
                    maxLength = j-i+1;
                    res = str.substring(i,j+1);
                }
            }
        }
        return res;
    }
    // 判断回文串
    private static boolean valid(String str,int left,int right){
        while(left<=right){
            if (str.charAt(left)!=str.charAt(right)){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

你可能感兴趣的:(java,算法,数据结构)