題目
針對一個只含數字的字符串,對其每3個數字進行一次翻轉,如下:
字符串:123456789 ==> 翻轉后:321654987
如果最后待翻轉的不足3個字符,也同樣進行翻轉,如下:
字符串:12345678 ==> 翻轉后:32165487
實現思路1
- 遍歷字符串
- 每間隔3個字符,對其進行翻轉,然后拼接到新字符串
- 遍歷結束后,判斷新字符串的長度,是否和原字符串一致
- 如果不一致則需要對剩余部分字符進行翻轉,再拼接到新字符串
代碼實現
def demo(s):
new_str = ""
for i in range(len(s)):
if (i + 1) % 3 == 0:
new_str += s[i-2:i+1][::-1]
if len(s) != len(new_str):
new_str += s[len(new_str):][::-1]
return new_str
old_str = "12345678"
print(demo(old_str))
實現思路2
- 遍歷字符串,步長為3
- 准備一個列表,每3個字符,作為一個字符串添加到列表中
- 遍歷列表,對列表中的每個字符串進行翻轉,再通過
join()
方法用依次拼接
代碼實現
def demo(s):
temp = []
for i in range(0, len(s), 3):
temp.append(s[i:i+3])
return "".join([i[::-1] for i in temp])
old_str = "12345678"
print(demo(old_str))
兩行代碼實現
old_str = "12345678"
print("".join([old_str[i:i+3][::-1] for i in range(0, len(old_str), 3)]))