1. 字串操作
    1. 題目
    2. 解法

字串操作

字串操作

APCS歷屆

題目

來看一下題目吧~這是一個APCS的歷屆:
pic
簡單來說就是像題目所說的偵測我們輸入的為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來讓他來字母排序,最後一個就用切片變成兩個陣列可以直接戶插。