[2016腾讯暑期实习在线笔试题]最长回文字符串

来源:互联网 发布:windows与linux 编辑:程序博客网 时间:2024/05/09 15:41

import java.util.Scanner;public class Main {// 动态规划public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {String input = in.nextLine();int n = input.length();if (n == 0) {System.out.println(0);continue;}int[][] max = new int[n][n];for (int i = 0; i < n; i++) {max[i][i] = 1;}for (int i = 0; i < n - 1; i++) {if (input.charAt(i) == input.charAt(i + 1)) {max[i][i + 1] = 2;} else {max[i][i + 1] = 1;}}for (int k = 2; k < n; k++) {for (int i = 0; i + k < n; i++) {if (input.charAt(i) == input.charAt(i + k)) {max[i][i + k] = max[i + 1][i + k - 1] + 2; } else {max[i][i + k] = Math.max(max[i + 1][i + k], max[i][i + k - 1]);}}}System.out.println(max[0][n - 1]);}}}


0 0
原创粉丝点击