字串操作
APCS歷屆
題目
來看一下題目吧~這是一個APCS的歷屆:

簡單來說就是像題目所說的偵測我們輸入的為0, 1, 2,並執行他所規定的操作。
解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| # 用sorted() or .join # 先將他用成array from sys import stdin def zero(inparr): for i in range(len(inparr)): if i % 2 == 0: inparr[i], inparr[i + 1] = inparr[i + 1], inparr[i] #i += 1 return inparr
def one(inparr): #print(inparr) for i in range(len(inparr)): if i % 2 == 0 : newarr = sorted([inparr[i], inparr[i + 1]]) inparr[i] = newarr[0] inparr[i + 1] = newarr[1] #print(inparr) return inparr
def two(inparr): fistarr = inparr[0:len(inparr) // 2 ] lastarr = inparr[len(inparr) // 2 : len(inparr)] newarr = [] for i in range(len(fistarr)): newarr.append(fistarr[i]) newarr.append(lastarr[i]) return newarr
'''inp = "bofcokae" inparr = list(inp) inparr = one(inparr) print(inparr)''' '''inp = "facebook" inparr = list(inp) two() zero() two() one() print(inparr)''' inp = input() inparr = list(inp) k = int(stdin.readline()) for i in range(k): inpt = int(stdin.readline()) #print(inpt) if inpt == 0: inparr = zero(inparr) elif inpt == 1: #print(inparr) inparr = one(inparr) #print(inparr) elif inpt == 2: inparr = two(inparr) #inparr = new #print(inparr) print("".join(inparr))
|
我的想法就是可以於下面的for迴圈中偵測,再跳到上面的3個function去做,第一個是將他兩個兩個對調,另外一個我是直接用sort來讓他來字母排序,最後一個就用切片變成兩個陣列可以直接戶插。