AOJの プログラミング入門 トピック9にチャレンジしました。
トピック9 文字列
トピック8は文字についてでしたが、トピック9は文字列の問題が4問です。
9_A:Finding a World
最初に検索するワード、以降に文章が数行続き、ワードがいくつあるかを数え出力する問題です。文章はEND_OF_TEXTの文字で終了となります。
wordという変数に最初の検索するワードを代入、
以降の文章はin_data_bという変数に代入していき、count()関数でワードの数をカウントするようにしてみました。
大文字・小文字を統一するために、in_data_bをlower()関数で小文字にしてから実行しました。
word = input()
in_data_b =
in_data_c =
while True:
in_data_a = input().split()
if 'END_OF_TEXT' in in_data_a:
break
else:
in_data_b += in_data_a
for iii in range(len(in_data_b)):
in_data_c.append(in_data_b[iii].lower())
print(in_data_c.count(word))
9_B:Shuffle
最初に入力された文字列の順番を、次の入力回数シャッフルする問題です。
"-"が車で無限ループで回して、指定回数分入力データをシフトして出力しました。
while True:
word = input()
if word == '-':
break
else:
num = int(input())
iii = 0
while iii < num :
num2 = int(input())
word_1 = word[0:num2]
word_2 = word[num2:]
word = (word_2+word_1)
iii+=1
print(word)
9_C:Card Game
9_Cは文字列の大小比較の問題です。>、<などで文字列も比較できるので、意外と簡単に記述できました。
num = int(input())
iii = 0
list_taro =
list_hana =
score_taro = 0
score_hana = 0
while iii < num :
taro,hana = map(str,input().split())
list_taro.append(taro)
list_hana.append(hana)
iii+=1
for jjj in range(len(list_taro)):
if list_taro[jjj] > list_hana[jjj] :
score_taro = score_taro + 3
elif list_taro[jjj] < list_hana[jjj]:
score_hana = score_hana + 3
else :
score_taro = score_taro + 1
score_hana = score_hana + 1
print(score_taro,score_hana)
9_D:Transformation
9_Dは文字列に対して、以下を実行する問題です。
- print a b: の
a 文字目から b 文字目までを出力する。 - reverse a b: の a 文字目から b 文字目までを逆順にする。
- replace a b p: の a 文字目から b 文字目までを p に置き換える。
文字列を反転させるには::-1を使用しました。
s1 = 'ABCDE'
s2 = s1[::-1]
print(s1) #=> "ABCDE"
print(s2) #=> "EDCBA"
str1 = str(input())
int1 = int(input())
iii = 0
while iii < int1 :
list_a = list(input().split())
if list_a[0] == 'replace' :
aaa = int(list_a[1])
bbb = int(list_a[2])
ccc = str(list_a[3])
str1 = str1[:aaa] + ccc + str1[bbb+1:]
elif list_a[0] == 'reverse' :
aaa = int(list_a[1])
bbb = int(list_a[2])
str1 = str1[:aaa] + str1[aaa:bbb+1][::-1] + str1[bbb+1:]
elif list_a[0] == 'print' :
aaa = int(list_a[1])
bbb = int(list_a[2])
print(str1[aaa:bbb+1])
iii += 1