leetcode2243_go_计算字符串的数字和

leetcode2243_go_计算字符串的数字和接着,计算每一组的数字和:1 + 1 + 1 = 3、1 + 1 + 2 = 4、2 + 2 + 2 = 6 和 2 + 3 = 5 。这样,s

大家好,欢迎来到IT知识分享网。

题目

给你一个由若干数字(0 – 9)组成的字符串 s ,和一个整数。

如果 s 的长度大于 k ,则可以执行一轮操作。在一轮操作中,需要完成以下工作:

将 s 拆分 成长度为 k 的若干 连续数字组 ,使得前 k 个字符都分在第一组,接下来的 k 个字符都分在第二组,依此类推。

注意,最后一个数字组的长度可以小于 k 。

用表示每个数字组中所有数字之和的字符串来 替换 对应的数字组。例如,”346″ 会替换为 “13” ,因为 3 + 4 + 6 = 13 。

合并 所有组以形成一个新字符串。如果新字符串的长度大于 k 则重复第一步。

返回在完成所有轮操作后的 s 。

示例 1:输入:s = “”, 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)组成。

解题思路分析

1、模拟;时间复杂度O(n),空间复杂度O(n)

leetcode2243_go_计算字符串的数字和

func digitSum(s string, k int) string { arr := []byte(s) for len(arr) > k { temp := make([]byte, 0) for i := 0; i < len(arr); i = i + k { sum := 0 for j := i; j < i+k && j < len(arr); j++ { sum = sum + int(arr[j]-'0') } temp = append(temp, []byte(strconv.Itoa(sum))...) } arr = temp } return string(arr) }

总结

Easy题目,直接遍历模拟即可

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/72630.html

(0)
上一篇 2024-06-30 21:15
下一篇 2024-07-02 15:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信