当前位置: 首页 > article >正文

OD B卷【恢复数字序列】

题目:

对于一个连续正整数组成的序列,可以将其拼接成一个字符串,在将字符串里的部分字符打乱顺序。如序列8 9 10 11 12, 拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1,现给定一个按如上规则得到的打乱字符的字符串,将其还原成连续正整数序列,并输出序列中最小的数字。
输入描述:
输入一行,为打乱字符的字符串和正整数序列的长度,空格隔开,字符串长度不超过200,正整数不超过1000,保证输入可以还原成唯一序列。
输出描述:
输出一个数字,为序列中最小的数字。

示例1
输入:
19801211 5
输出:
8
说明:正常的数字序列为8 9 10 11 12,最小为8

解题代码

 
class Solution:
    def __init__(self, string):
        self.string = string  # 字符串
 
    def getminint(self, k):
        map1 = {}
        for c in self.string:
            if c not in map1:
                map1[c]=0
            map1[c] += 1
 
        map2 = {}
        for i in range(1, k + 1):
            for c in str(i):
                if c not in map2:
                    map2[c]=0
                map2[c] += 1
                
        flag = True
        for c in map1:
            if map2.get(c) is None or map2[c] != map1[c]:
                flag=False
        if flag:
            return 1
 
        #注意题目到底写的是1000还是10000
        for i in range(2, 10000 - k + 2):
            for c in str(i - 1):
                map2[c] = map2.get(c, 0) -1
            for c in str(i + k - 1):
                map2[c] = map2.get(c, 0) +1
            flag = True
            for c in map1:
                if map2.get(c) is None or map2[c] != map1[c]:
                    flag=False
            if flag:
                return i
        return -1
        
s, cnt = map(str, input().split())
solution = Solution(s) 
print(solution.getminint(int(cnt)))

http://www.kler.cn/a/428555.html

相关文章:

  • Linux shell 批量验证端口连通性
  • elementUI Table组件实现表头吸顶效果
  • C++经典例题
  • 【知识分享】PCIe5.0 TxRx 电气设计参数汇总
  • GS论文阅读--GeoTexDensifier
  • 抽奖系统(4——活动模块)
  • TCP客户端服务器端通信(线程池版)
  • 【机器学习】基于SVM、逻辑回归和CNN的手写数字识别:性能对比与应用分析
  • (七)腾讯cloudstudio+Stable-Diffusion-webui AI绘画教程-安装Stable-Diffusion-WebUI
  • Vue3组件通信(父传子,子传父,跨组件通信)
  • 21届秋/校招面经
  • xLSTM 阅读笔记
  • 日本IT|企业需要什么样的技术?
  • 处理后端返回的时间格式问题
  • MySQL -- CURD(下)
  • AUTOSAR CP复杂驱动程序(Complex Driver,CDD)的设计与集成指南导读
  • 动态规划子序列问题系列一>最长递增子序列
  • 用Python开发“迷你井字棋”小游戏
  • find命令深度详解
  • 计算机视觉:学习指南
  • 【python 批量将PPT中各种东西保存为图片 没有水印】
  • 在 Spring Boot 中使用 JPA(Java Persistence API)进行数据库操作
  • Telnet不安全?如何配置使用更安全的STelnet远程登录华为AR1000V路由器?
  • docker修改并迁移存储至数据盘
  • C语言求斐波那契数(不考虑溢出)(递归+迭代)
  • mobi文件转成pdf