备战蓝桥杯D33 - 真题 - 松散子序列

题目描述

 解题思路

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 ] 中。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值