LeetCode简单题之密钥格式化
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之密钥格式化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
有一個密鑰字符串 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 非空
來源:力扣(LeetCode)
解題思路
??大體思路:第一步先將‘-’去掉,然后計算第一組有多少字符;第二步,遍歷剩下的字符,每個k個字符添加一個‘-’。
class Solution:def licenseKeyFormatting(self, s: str, k: int) -> str:S=s.replace('-','') #去除‘-’temp=len(S)%k #計算第一組在整個字符串中的位置news=S[0:temp].upper() #構造第一組,這里有兩種情況其一是0個字符,其二是大于0小于k個字符if temp: #count計數當前已經訪問了幾個字符,第一組有字符的話按k個處理count=kelse:count=0for i in S[temp:]:if count==k:news+='-'news+=i.upper()count=1else:news+=i.upper()count+=1return news
總結
以上是生活随笔為你收集整理的LeetCode简单题之密钥格式化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之石头与宝石
- 下一篇: LeetCode简单题之最小操作次数使数