LeetCode简单题之计算字符串的数字和

news/2024/11/24 6:01:05/

题目

给你一个由若干数字(0 - 9)组成的字符串 s ,和一个整数。
如果 s 的长度大于 k ,则可以执行一轮操作。在一轮操作中,需要完成以下工作:
将 s 拆分 成长度为 k 的若干 连续数字组 ,使得前 k 个字符都分在第一组,接下来的 k 个字符都分在第二组,依此类推。注意,最后一个数字组的长度可以小于 k 。
用表示每个数字组中所有数字之和的字符串来 替换 对应的数字组。例如,“346” 会替换为 “13” ,因为 3 + 4 + 6 = 13 。
合并 所有组以形成一个新字符串。如果新字符串的长度大于 k 则重复第一步。
返回在完成所有轮操作后的 s 。
示例 1:
输入:s = “11111222223”, k = 3
输出:“135”
解释:

  • 第一轮,将 s 分成:“111”、“112”、“222” 和 “23” 。
    接着,计算每一组的数字和:1 + 1 + 1 = 3、1 + 1 + 2 = 4、2 + 2 + 2 = 6 和 2 + 3 = 5 。
    这样,s 在第一轮之后变成 “3” + “4” + “6” + “5” = “3465” 。
  • 第二轮,将 s 分成:“346” 和 “5” 。
    接着,计算每一组的数字和:3 + 4 + 6 = 13 、5 = 5 。
    这样,s 在第二轮之后变成 “13” + “5” = “135” 。
    现在,s.length <= k ,所以返回 “135” 作为答案。
    示例 2:
    输入:s = “00000000”, k = 3
    输出:“000”
    解释:
    将 “000”, “000”, and “00”.
    接着,计算每一组的数字和:0 + 0 + 0 = 0 、0 + 0 + 0 = 0 和 0 + 0 = 0 。
    s 变为 “0” + “0” + “0” = “000” ,其长度等于 k ,所以返回 “000” 。
    提示:
    1 <= s.length <= 100
    2 <= k <= 100
    s 仅由数字(0 - 9)组成。
    来源:力扣(LeetCode)

解题思路

  这样的题目一看就非常能想到递归来试下。一眼就能看出可以递归的题目往往写法上比较简单,只需要符合第一个结果就能马上写出code。在每一层递归里做一个简单的事,就是将整个字符串先三个三个按照要求拼成一个新的字符串,至于新的字符串长度是什么情况无需关注,下一层自会解决。

class Solution:def digitSum(self, s: str, k: int) -> str:if len(s)<=k:  #递归出口return sS,temp,count='','',0for i in s:temp+=icount+=1if count%k==0:S+=str(sum([int(j) for j in temp]))temp=''if temp:  #假如s的长度不是k的整数倍,处理尾巴S+=str(sum([int(j) for j in temp]))s=Sreturn self.digitSum(s,k)

在这里插入图片描述


http://www.ppmy.cn/news/605406.html

相关文章

比Momentum更快:揭开Nesterov Accelerated Gradient的真面目NAG 梯度下降

d为累计梯度 作为一个调参狗&#xff0c;每天用着深度学习框架提供的各种优化算法如Momentum、AdaDelta、Adam等&#xff0c;却对其中的原理不甚清楚&#xff0c;这样和一条咸鱼有什么分别&#xff01;&#xff08;误&#xff09;但是我又懒得花太多时间去看每个优化算法的原始…

LeetCode简单题之重新排列日志文件

题目 给你一个日志数组 logs。每条日志都是以空格分隔的字串&#xff0c;其第一个字为字母与数字混合的 标识符 。 有两种不同类型的日志&#xff1a; 字母日志&#xff1a;除标识符之外&#xff0c;所有字均由小写字母组成 数字日志&#xff1a;除标识符之外&#xff0c;所有…

深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

深度学习优化函数详解系列目录 深度学习优化函数详解&#xff08;0&#xff09;– 线性回归问题 深度学习优化函数详解&#xff08;1&#xff09;– Gradient Descent 梯度下降法 深度学习优化函数详解&#xff08;2&#xff09;– SGD 随机梯度下降 深度学习优化函数详解&…

LeetCode简单题之统计字符串中的元音子字符串

题目 子字符串 是字符串中的一个连续&#xff08;非空&#xff09;的字符序列。 元音子字符串 是 仅 由元音&#xff08;‘a’、‘e’、‘i’、‘o’ 和 ‘u’&#xff09;组成的一个子字符串&#xff0c;且必须包含 全部五种 元音。 给你一个字符串 word &#xff0c;统计并返…

深度学习优化方法-AdaGrad 梯度下降

梯度下降算法、随机梯度下降算法&#xff08;SGD&#xff09;、小批量梯度下降算法&#xff08;mini-batch SGD&#xff09;、动量法&#xff08;momentum&#xff09;、Nesterov动量法有一个共同的特点是&#xff1a;对于每一个参数都用相同的学习率进行更新。但是在实际应用中…

LeetCode简单题之三除数

题目 给你一个整数 n 。如果 n 恰好有三个正除数 &#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在整数 k &#xff0c;满足 n k * m &#xff0c;那么整数 m 就是 n 的一个 除数 。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;fal…

决策树--信息增益,信息增益比,Geni指数的理解

20210528 https://blog.csdn.net/qq_39408570/article/details/89764177 信息增益和基尼指数不是等价的 大多数时候它们的区别很小 信息增益对较混乱的集合有很好的表现力&#xff0c;但是基尼指数有所欠缺。另一方面&#xff0c;这也说明较纯的集合&#xff0c;基尼指数可能会…

LeetCode简单题之哪种连续子字符串更长

题目 给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 例如&#xff0c;s “110100010” 中&#xff0c;由 1 组成的最长连续子字符串的长度是…