【编程题目 |100分】密钥格式化【2021 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【密钥格式化】

题目描述

给定一个非空字符串 S,其被 N 个’-‘分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的串每 K 个用’-‘分隔,并将小写字母转换为大写。

输入描述

正整数 K 和‘-’分割的字符串,如:

2

25G3C-abc-d

输出描述

转换后的字符串

示例 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 个字符。


代码实现


C++解法一


#include <bits/stdc++.h>

using namespace std;

class Solution {
public:
    string licenseKeyFormatting(string S, int K) 
    {
        string str;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


#include<bits/stdc++.h>

using namespace std;

int main()
{

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python


while 1:
    try:
        s1, s2 = input().split("-", 1)
        k = int(input())

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看