【leetcode】1849. 将字符串拆分为递减的连续值
给你一个仅由数字组成的字符串 s 。
请你判断能否将 s 拆分成两个或者多个 非空子字符串 ,使子字符串的 数值 按 降序 排列,且每两个 相邻子字符串 的数值之 差 等于 1 。
例如,字符串 s = “0090089” 可以拆分成 [“0090”, “089”] ,数值为 [90,89] 。这些数值满足按降序排列,且相邻值相差 1 ,这种拆分方法可行。
另一个例子中,字符串 s = “001” 可以拆分成 [“0”, “01”]、[“00”, “1”] 或 [“0”, “0”, “1”] 。然而,所有这些拆分方法都不可行,因为对应数值分别是 [0,1]、[0,1] 和 [0,0,1] ,都不满足按降序排列的要求。
如果可以按要求拆分 s ,返回 true ;否则,返回 false 。
子字符串 是字符串中的一个连续字符序列。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/splitting-a-string-into-descending-consecutive-values
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
第一次提交WA
class Solution(object):def dfs(self, s1, s2):# print(s1, '@', s2)if len(s2)==0:return 1for i in range(1, len(s2)+1):# print("#",s2[0:i])if int(s1[-1]) == int(s2[0:i]) + 1:s1.append(s2[0:i])if (self.dfs(s1, s2[i:]) ==1):return 1return 0def splitString(self, s):""":type s: str:rtype: bool"""for i in range(1, len(s)):a = []a.append(s[0:i])# print(a, '#', s[i:])if self.dfs(a, s[i:]) == 1:return Truereturn False
dfs
函数中s1用来保存已经分割的字符串,s2用来保存没有分割的字符串。
提交之后发现:
“200100” 未通过测试用例
调试查看输出信息:
在已经分好了[‘2’, ‘001’] 还有’00’没有分割时有两种情况
- 将’00’分割成2个数字→’0’与’0’
①行显示分好了[‘2’, ‘001’,‘0’] 还有’0’没有分割时,继续深搜’0’,
②发现数组最后一个元素’0’不等于没有分割的’0’+1 ,于是回退到已经分好了[‘2’, ‘001’] 还有’00’没有分割时的是 - 将’00’分割成1个数字 , 0
发现已经分好的数里还有之前分成两个0时候的存的一个’0’,发现应该对未成功的分割进行删除。
修改代码
添加一句s1.pop()
class Solution(object):def dfs(self, s1, s2):if len(s2) == 0:return 1for i in range(1, len(s2) + 1):print(s1, '@', s2, "-> ",i,"->", s2[0:i], '#', s2[i:])if int(s1[-1]) == int(s2[0:i]) + 1:s1.append(s2[0:i])if (self.dfs(s1, s2[i:]) == 1):return 1else:s1.pop()return 0def splitString(self, s):""":type s: str:rtype: bool"""for i in range(1, len(s)):a = []a.append(s[0:i])# print(a, '#', s[i:])if self.dfs(a, s[i:]) == 1:return Truereturn False
if __name__ == '__main__':a = Solution()print(a.splitString(s="200100"))
重新提交
【leetcode】1849. 将字符串拆分为递减的连续值相关推荐
- LeetCode——1849. 将字符串拆分为递减的连续值(Splitting a String Into Descending Consecutive Val..)[中等]——分析及代码(Java)
LeetCode--1849. 将字符串拆分为递减的连续值[Splitting a String Into Descending Consecutive Values][中等]--分析及代码[Java ...
- 1849 将字符串拆分为递减的连续值(递归)
1. 问题描述: 给你一个仅由数字组成的字符串 s .请你判断能否将 s 拆分成两个或者多个非空子字符串 ,使子字符串的 数值按降序排列,且每两个相邻子字符串的数值之差等于 1 .例如,字符串 s = ...
- LeetCode 2138. 将字符串拆分为若干长度为 k 的组
文章目录 1. 题目 2. 解题 1. 题目 字符串 s 可以按下述步骤划分为若干长度为 k 的组: 第一组由字符串中的前 k 个字符组成,第二组由接下来的 k 个字符串组成,依此类推.每个字符都能够 ...
- LeetCode 842. 将数组拆分成斐波那契序列(暴力查找)
1. 题目 给定一个数字字符串 S,比如 S = "123456579",我们可以将它分成斐波那契式的序列 [123, 456, 579]. 形式上,斐波那契式序列是一个非负整数列 ...
- [LeetCode] Word Break II 拆分词句之二
[LeetCode] Word Break II 拆分词句之二 Given a string s and a dictionary of words dict, add spaces in s to ...
- LeetCode实战:字符串相乘
题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num ...
- LeetCode实战:字符串相加
题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and ...
- 每日一题(字符串拆分)
前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...
- 在Bash中将字符串拆分为数组
本文翻译自:Split string into an array in Bash In a Bash script I would like to split a line into pieces a ...
最新文章
- mysql 连接url中useUnicode=truecharacterEncoding=UTF-8 的作用
- MIUI应用权限设置
- python标准模块--os
- Lesson 13.1 深度学习建模目标与性能评估理论
- 数据挖掘十大经典算法之——Naive Bayes 算法
- 聊聊高并发(三十六)Java内存模型那些事(四)理解Happens-before规则
- 深入浅出parallelStream
- (需求实战_进阶_02)SSM集成RabbitMQ 关键代码讲解、开发、测试
- CV《神经风格转换》
- JavaScript设计模式(一)-- 简单工厂模式
- PHPStrom 使用技巧以及基本设置教程【更新完结】
- JavaScript学习(八十六)—运算符知识点总结
- MySQL 基础操作
- KNX转485模块专用配置软件使用说明书
- java人民币金额大写_Java人民币金额数字转换成大写
- Ember.js和Vue.js对比,哪个框架更优秀?
- Java实现蓝桥杯VIP算法训练 预测身高
- 显卡驱动一定要更新吗?怎么更新显卡驱动?
- Doris FE启动流程源码详细解析
- 自制ip地址切换器ip.dat