class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows == 1:
return s
lst = [[] for _ in range(numRows)]
n = len(s)
up = list(range(numRows))
row_list = up + up[::-1][1:numRows-1]
l = 2 * numRows - 2
count = n // l + 1
row_list = row_list * count
for i,j in enumerate(s):
lst[row_list[i]].append(j)
str_ = ""
for i in lst:
for j in i:
str_ += j
return str_
大佬题解:
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows < 2: return s
res = ["" for _ in range(numRows)]
i, flag = 0, -1
for c in s:
res[i] += c
if i == 0 or i == numRows - 1: flag = -flag
i += flag
return "".join(res)
题2:
我的题解:
class Solution:
def reformatNumber(self, number: str) -> str:
number = number.replace(" ","").replace("-","")
n = len(number)
if n == 2 or n == 3:
return number
if n == 4:
return number[:2] + "-" + number[2:4]
def func_0(str_):
n = len(str_)
str_ =""
count = 0
while count != n:
str_ += number[count:count+3] + "-"
count += 3
return str_
def func_1(str_):
n = len(str_)
str_1 = func_0(str_[:n - 4])
str_2 = str_[n-4:n-2] + "-" +str_[n-2:n]
return str_1+str_2
def func_2(str_):
n = len(str_)
str_1 = func_0(str_[:n - 2])
str_2 = str_[n-2:n]
return str_1+str_2
if n % 3 == 0:
return func_0(number).rstrip("-")
if n % 3 == 1:
return func_1(number)
if n % 3 == 2:
return func_2(number)
大佬题解:
class Solution:
def reformatNumber(self, number: str) -> str:
digits = list()
for ch in number:
if ch.isdigit():
digits.append(ch)
n, pt = len(digits), 0
ans = list()
while n > 0:
if n > 4:
ans.append("".join(digits[pt:pt+3]))
pt += 3
n -= 3
else:
if n == 4:
ans.append("".join(digits[pt:pt+2]))
ans.append("".join(digits[pt+2:pt+4]))
else:
ans.append("".join(digits[pt:pt+n]))
break
return "-".join(ans)