Leetcode practice (3)

DI String Match

  • 题目描述:给定一个只包含D和I字符的字符串,按照字符串长度进行递增递减,出现I表示递增,出现D表示递减,最后输出列表。
  • 思路:按照题目描述,遍历输入字符串,进行条件判断后进行递增or 递减即可。
  • code:
class Solution(object):
    def diStringMatch(self, S):
        lo, hi = 0, len(S)
        ans = []
        for x in S:
            if x == 'I':
                ans.append(lo)
                lo += 1
            else:
                ans.append(hi)
                hi -= 1

        return ans + [lo]
  •  总结:题目本身描述已经很直观,让人蛋疼的问题在于最后列表返回时,多了一项,而多的这一项就打破了原有简单的规律,而事实上,多的一项仅仅是满足 x == 'I' 条件的下一轮递要插入的项而已,而没发现这点的我把问题想复杂了,以为每次插入的项是一个包含二个元素的元组,每次插入时是要修改当前列表最后一项,再插入新的元素,最终发现不得法。这个故事告诉我,简单问题还是要简单化!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值