最长上升字符串 ——Alphabet

题目:https://vjudge.net/problem/Gym-101291A

把字符串分析得很全面的博客:https://blog.csdn.net/lxt_Lucia/article/details/81206439(内容真的很全面)

我的理解:
当时是真的无从下手,看了以后懂了。
动态规划的思想,由前一个推下一个直到最后一个。
选择前面比它小的数字里,这些数字前面num最大的+1,
这样一个个推下来,num最大的那一个就是答案。
用数字更好理解,其实字母也差不多。
当时样例的答案都看不明白,应该一步步想,这样可能就能想到动态规划了。

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	static long n;
	static long half;

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String s = input.nextLine();

		int[] num = new int[s.length()];
		Arrays.fill(num, 1);

		for (int i = 1; i < s.length(); i++) {
			for (int j = i - 1; j >= 0; j--) {
				if (s.charAt(i) > s.charAt(j)) {
					if (num[i] - 1 < num[j]) {
						num[i] = num[j] + 1;
					}
				}
			}
		}
		Arrays.parallelSort(num);
		System.out.println((26 - num[s.length() - 1]));
	}
}

你可能感兴趣的:(最长上升字符串 ——Alphabet)