题目描述
给定一个仅含小写字母的字符串 s ,假设 s 的一个子序列 t 的第 i 个字符 对应了原字符串中的第 pi 个字符。我们定义 s 的一个松散子序列为:对于 i > 1 总是有 pi − pi−1 ≥ 2 。设一个子序列的价值为其包含的每个字符的价值之和 ( a ∼ z 分别为 1 ∼ 26 ) 。
求 s 的松散子序列中的最大价值。
输入格式
输入一行包含一个字符串 s 。
输出格式
输出一行包含一个整数表示答案。
样例输入
复制
azaazaz
样例输出
复制
78
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int[] dp = new int[s.length()];
int[] arr = new int[s.length()];
for (int i = 0; i < arr.length; i++) {
arr[i] = s.charAt(i) - 96;
}
if (arr.length == 1) System.out.println(arr[0]);
else if (arr.length == 2) System.out.println(Math.max(arr[0], arr[1]));
else {
int max = 0;
dp[0] = arr[0];
dp[1] = Math.max(arr[0], arr[1]);
for (int i = 2; i < arr.length; i++) {
dp[i] = Math.max(dp[i - 2] + arr[i], dp[i - 1]);
max = Math.max(max, dp[i]);
}
System.out.println(max);
}
}
}