题目描述
解题思路
ps:思路是我看了大佬的题解后自己的理解,自己给自己捋清楚思路。
1.设置输入,将字符串输入
2.因为输入的是字符,但要找出字符的最大价值,所以先将字符串转化成对应的数值。
这时候就要用到ord函数,这个函数用于返回表示给定字符的Unicode代码点的整数。就是把字符转成ASCII码。小写字母 a 从 97 开始,要想让 a 的数值是 1,就要对96取余,得到结果就是1,后面的字符同理,这样就能得到字母 a ~ z 对应的数值是1 ~ 26。把字符转换成数字后存到 s_list[ ]列表中。
3.定义我们要得到的子序列的数值 t[ ], 长度为 len(s) + 1 ,因为条件说 pi- pi-1>2,所以循环时要从1开始才能保证这个条件成立,如果 t [ ]列表长度不加 1 数据会越界。先把列表中的数值都设置为0,在后续的循环中我们进行相加比较后再进行重新赋值修改。
4.开始 for 循环:
循环变量 i 从1 开始:就先把 s 字符的第一个字符对应的数值添加进 t [ 1 ]。
i > 1时:将 s_list[i-1]+t[i-2] 与 t[i-1] 进行比较,找出较大的值,添加到 t[ i ] 中。