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

腾讯0708面试手撕题:严格递增数字分割

题目

给定一个数字字符串 s,请你将其分割成至少两个非空子串,使得每个子串满足以下条件:

无前导零:如果子串长度大于1,则不能以 '0' 开头。

严格递增:每个子串表示的数值必须严格大于前一个子串的数值。

返回所有可能的分割方案,方案中的子串按顺序排列。你可以以任意顺序返回答案。

示例 1:

输入:s = "1234"

输出: [ ["1","2","3","4"], ["1","2","34"], ["12","34"], ["1","234"] ]

解释:所有分割方案均满足条件。例如,分割 ["1","23","4"] 无效,因为 23 > 4 不满足严格递增。

示例 2:

输入:s = "1023"

输出: [ ["10","23"] ]

解释:唯一有效的分割是 ["10","23"],其中 10 < 23 且无前导零。

示例 3:

输入:s = "10"

输出: []

解释:唯一可能的分割是 ["1","0"],但 1 > 0,不满足条件。 

解答

使用深度优先搜索(DFS)回溯算法解决严格递增数字分割问题,核心思路是递归尝试所有可能的分割点,并在过程中验证子串的合法性。

代码如下:

def splitIntoIncreasing(s):results = []n = len(s)def dfs(start, path, last):if start == n:if len(path) >= 2:results.append(path)returnfor end in range(start + 1, n + 1):curr_str = s[start:end]if len(curr_str) > 1 and curr_str[0] == '0':continueif path:last_str = lastlen_last = len(last_str)len_curr = len(curr_str)if len_last < len_curr or (len_last == len_curr and last_str < curr_str):dfs(end, path + [curr_str], curr_str)else:dfs(end, [curr_str], curr_str)dfs(0, [], "")return resultss = "10235432243"
print(splitIntoIncreasing(s))
'''
[['10', '23', '54', '32243'], ['10', '23', '543', '2243'], ['10', '23', '5432243'], ['10', '235', '432243'], ['10', '2354', '32243'], ['10', '235432243'], ['102', '354', '32243'], ['102', '35432243'], ['1023', '5432243'], ['10235', '432243']]
'''
http://www.dtcms.com/a/271443.html

相关文章:

  • 17-C#封装,继承,多态与重载
  • git配置密钥
  • MTK-系统设置Settings 开机累计时长源码分析
  • AI芯片产品经理:算力革命的架构师
  • Mysql底层专题(七)MVCC多版本并发控制机制
  • STM32-定时器输入捕获
  • 高级LoRA:面向垂直领域LLM的实战微调指南——LoRA合并、续训、堆叠,Checkpoint管理
  • 佰力博PEAI压电分析仪-精准测量压电材料d33系数
  • RAG实战指南 Day 11:文本分块策略与最佳实践
  • HCIP(综合实验)
  • 腾讯位置商业授权未来驾车ETA(批量)
  • Fluent许可配置常见问题
  • ARM汇编编程(AArch64架构)课程 - 第8章:控制流与循环
  • 数字化管理新趋势:权限分级看板如何筑牢安全防线
  • 【Java】【力扣】【字节高频】3.无重复字符的最长字串
  • HTTP API 身份认证
  • 【Qt】Qt QML json处理
  • 微信获取access_token授权的两种不同情况
  • 零成本实现文本转语音
  • python网络爬虫笔记21:天地图解析服务调用教程
  • 正点原子学习 用户权限管理
  • 海康威视监控相机实时性研究
  • 深度学习遇到的问题
  • 一[3.7] YOLO系列基础(2)- “Bottleneck模块详解”
  • JavaScript对象的深度拷贝
  • 17.Spring Boot的Bean详解(新手版)
  • 十、Rocky Linux 9.x 在线安装Nginx 1.28.0
  • 豆包编写Java程序小试
  • 电子元器件基础知识总结
  • 基于SpringBoot+Vue的疫情问卷调查与返校信息管理系统】前后端分离