728x90
class Solution:
def licenseKeyFormatting(self, s: str, k: int) -> str:
tmp = []
s = s.replace("-","")
s = s[::-1]
for i in range(0,len(s),k):
tmp.append(s[i:i+k])
# print(tmp)
ans = "-".join([x[::-1] for x in tmp[::-1]])
return ans.upper()
조건
1. alphanumeric, dashes('-')
2. 정확히 k개의 char만큼씩 group으로 나누어야 함
2-1. 첫번째 group의 경우 1<=n<=k 의 조건을 충족해야함
3. 그룹간에는 dash로 연결.
4. 모두 upper case
실행순서
1. 대쉬 replace to whitespace
2. reverse s
3. loop from zero to len(n)-1 by k step.
3-1. append group to tmp list
4. loop tmp by reverse order
4-1. reverse each element in tmp
4-2. join with dash.
다른 풀이
class Solution(object):
def licenseKeyFormatting(self, S, K):
"""
:type S: str
:type K: int
:rtype: str
"""
result = []
for i in reversed(range(len(S))):
if S[i] == '-':
continue
if len(result) % (K + 1) == K:
result += '-'
result += S[i].upper()
return "".join(reversed(result))
s를 reverse로 순회.
1. dash는 continue로 스킵
2. result의 length가 K의 배수보다 1큰 경우( 나머지가 K+1일 경우 ), 대쉬 추가
2-1. 대쉬 추가후 계속 string 추가
3. result에 uppercase로 추가
4. join으로 결과물 제출
출처: github.com/jiapengwen/LeetCode/blob/master/Python/license-key-formatting.py
728x90
'Leetcode' 카테고리의 다른 글
[LeetCode] Max Consecutive Ones 파이썬 (문자열 압축) (0) | 2021.04.29 |
---|---|
[LeetCode] Number Complement 파이썬 (format, bitwise) (0) | 2021.04.19 |
[LeetCode] Island Perimeter 파이썬 (island, traverse) (0) | 2021.04.19 |
[LeetCode] Hamming Distance 파이썬 (bitwise) (0) | 2021.04.19 |
[LeetCode] Repeated Substring Pattern 파이썬 (KMP) (0) | 2021.04.18 |
댓글