栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

删除字符获取字符串中的最大整数 [python]

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

删除字符获取字符串中的最大整数 [python]

删除字符获取字符串中的最大整数
问题描述

有一个由数字组成的字符串num1,我们从其中删掉n个字符得到一个新的数字num2,找到num2的最小值。
保证num1 有‘0-9’组成, n 小于 num1 的长度,‘012’等情况算作合法解(整数12)。

示例:
num1 = ‘2651321’
n = 4
预期结果:121


解题思路:

从字符串中删除n个字符,可以看做在长度为 l 的num1中按顺序挑选 m =(l-n)个字符组成最小的数字。
首先想到的就是num2的第一位数字要尽量小,同时,因为不能改变num1中字符的顺序,所以还要保证取出第一位后,后面的数字可以满足 (l-n)- 1 的长度。
之后的数字需要在第一位数字之后的数字中再按上述方式查找,直到满足 m 长度。


代码实现
num1 = '2651321'
n = 4

def find_min(start: int, end: int, nums: str):
    # 搜索 nums[start:end+1]中最小的数字
    index, num = 0, '9'
    for i, c in enumerate(nums[start:end + 1]):
        if c < num:
            index = i
            num = c
    return index, num


m = len(num1) - n
res = []
i, start = 1, 0
while len(res) < m:
    end = n + i  # l - (m - i) - 1 = n + i - 1, 这里i表示结果中的第i个数,end表示下标,所以要 - 1
    index, min_num = find_min(start, end, num1)
    start = index + 1
    res.append(min_num)
    i += 1

print(''.join(res))

注:
没有找到leetcode中对应的题目,无法对代码的完备性进行测试。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号