Leedcode-密钥格式化

自己写的:

class Solution:
    def licenseKeyFormatting(self, s: str, k: int) -> str:
        # 将字符串转换为列表,方便操作
        new_S = list()
        # 遍历输入字符串
        for i in s:
            # 如果当前字符不是 '-',则添加到新列表中
            if i != '-':
                # 如果不是小写字母,则直接添加
                if not i.islower():
                    new_S.append(i)
                # 如果是小写字母,则转换为大写后添加
                else:
                    new_S.append(i.upper())
        
        # 计算新列表的长度
        n = len(new_S)
        # 计算需要插入 '-' 的次数
        times = n // k
        # 计算剩余字符的数量
        left_num = n - times * k
        
        # 初始化一个新的字符串,用于存储结果
        new_S_plus = ''
        count = 0
        
        # 如果有剩余字符,则先将剩余字符插入到新字符串中,并在末尾添加 '-'
        if left_num != 0:
            for j in new_S[:left_num]:
                new_S_plus = new_S_plus + j
            new_S_plus = new_S_plus + '-'

            # 遍历剩余的字符,每添加 k 个字符后插入一个 '-'
            for m in new_S[left_num:]:
                new_S_plus = new_S_plus + m
                count += 1
                if count == k:
                    new_S_plus = new_S_plus + '-'
                    count = 0
            # 返回结果,去除末尾多余的 '-'
            return new_S_plus.rstrip('-')
        else:
            # 如果没有剩余字符,则直接遍历添加字符,并在每添加 k 个字符后插入一个 '-'
            for n in new_S:
                new_S_plus = new_S_plus + n
                count += 1
                if count == k:
                    new_S_plus = new_S_plus + '-'
                    count = 0

        # 返回结果,去除末尾多余的 '-'
        return new_S_plus.rstrip('-')

 gpt优化:

class Solution:
    def licenseKeyFormatting(self, s: str, k: int) -> str:
        # 去除所有的 '-',并转换为大写
        s = s.replace('-', '').upper()
        
        # 计算第一段的长度
        first_length = len(s) % k
        
        # 初始化结果字符串
        result = s[:first_length] + '-' if first_length > 0 else ''
        
        # 遍历剩余字符,每 k 个字符插入一个 '-'
        for i in range(first_length, len(s), k):
            result += s[i:i+k] + '-'
        
        # 返回结果,去除末尾的 '-'
        return result.rstrip('-')

 

posted @ 2024-05-12 16:34  Junior_bond  阅读(1)  评论(0编辑  收藏  举报