LeetCode 482. 密钥格式化

简介: 有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。

网络异常,图片无法展示
|

题目地址(482. 密钥格式化)

leetcode-cn.com/problems/li…

题目描述

有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。
给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 '-'(破折号)隔开,并且将所有的小写字母转换为大写字母。
给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。
示例 1:
输入:S = "5F3Z-2e-9-w", K = 4
输出:"5F3Z-2E9W"
解释:字符串 S 被分成了两个部分,每部分 4 个字符;
     注意,两个额外的破折号需要删掉。
示例 2:
输入:S = "2-5g-3-J", K = 2
输出:"2-5G-3J"
解释:字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。
提示:
S 的长度可能很长,请按需分配大小。K 为正整数。
S 只包含字母数字(a-z,A-Z,0-9)以及破折号'-'
S 非空

思路

从倒序开始,符合k的就pop出来进行拼接

代码

  • 语言支持:Python3

Python3 Code:

class Solution:
    def licenseKeyFormatting(self, s: str, k: int) -> str:
        sList = s.split("-")
        sStr =  "".join(sList)
        tempStr = ""
        res = []
        sStr = reversed(sStr)
        for i in sStr:
            if len(tempStr) == k:
                res.append(tempStr)
                tempStr = ""
            upperStr = i.upper()
            tempStr = upperStr + tempStr
        if len(tempStr) != 0:
            res.append(tempStr)
        res = res[::-1]
        # print(res)
        return "-".join(res)

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)
目录
相关文章
|
12月前
【Leetcode -461.汉明距离 -482.密钥格式化】
【Leetcode -461.汉明距离 -482.密钥格式化】
44 0
|
5月前
leetcode-1694:重新格式化电话号码
leetcode-1694:重新格式化电话号码
40 0
|
算法
【Day18】LeetCode算法刷题[1694. 重新格式化电话号码 ] [202.快乐数]
学习LeetCode算法刷题[1694. 重新格式化电话号码 ] [202.快乐数]。
111 0
【Day18】LeetCode算法刷题[1694. 重新格式化电话号码 ] [202.快乐数]
LeetCode每日一题——1694. 重新格式化电话号码
给你一个字符串形式的电话号码 number 。number 由数字、空格 ’ '、和破折号 ‘-’ 组成。 请你按下述方式重新格式化电话号码。
84 0
|
数据库
LeetCode(数据库)- 重新格式化部门表
LeetCode(数据库)- 重新格式化部门表
125 0
|
5天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
44 6
|
2月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
82 2