この記事では、簡単な問題を理解することにします。
問題の名前は「置換と削除の問題」で、ある特定の文字を別の文字列に置換し、ユーザーが入力した文字から特定の文字を削除することになります。
つまり、ある文字を別の文字列または文字群に置き換え、入力からある文字を削除する必要があることがわかります。
これから行う2つのルールは次のとおりです。
-
- 「a」をダブル「d」に置き換える (
dd)
- 「a」をダブル「d」に置き換える (
- b` の出現箇所をすべて削除します。
ステップ 1 と 2: N の入力を受け取り、それを文字配列に変換する
Python の input 関数で入力を受け取り、list 関数で入力文字列をパラメーターとして文字配列を作成します。
|
1
2
3
4
|
# 1. Taking inputn = input()
# 2. Convert into a list of charactersl= list(n)
|
ステップ3: 配列を走査し、規則に従って文字の置換と削除を行う
文字配列ができたので、そのリストを走査して、文字aが得られるたびにそれをddに置き換え、文字bに出会うたびにその文字を文字配列から削除します。
文字を置き換えるには、配列の所定の位置にある文字を直接変更し、配列から文字を削除するには remove 関数を使用します。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# Rule 1 : Replace 'a' with 'dd'# Rule 2 : Remove each 'b'# Iterate over each characteri = len(l)-1
while(i!=-1):
# Rule 1
if(l[i] == 'a'):
l[i] = 'dd'
# Rule 2
elif(l[i] == 'b'):
l.remove(l[i])
i = i-1
|
この記事もチェック:Pythonのindex関数をリストや文字列の使い方を解説する
ステップ 4: 更新された新しい文字配列の結合
最後のステップは、更新された文字配列の全要素を1つの文字列に結合することです。
よりよい方法は、入力として受け取った元の文字列を変更することです。
そのために使う関数が join 関数です。
|
1
2
3
|
# Join the updated listn = ''.join(l)
print("New string is: ",n)
|
これで完成です。
これであなたの解答は完成です。
では、ランダムに出力されるサンプルを見てみましょう。
ファイナルコード
|
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
|
# 1. Taking inputn = input()
# 2. Convert into a list of charactersl= list(n)
print("String entered by user is: ",n)
# Rule 1 : Replace 'a' with 'dd'# Rule 2 : Remove each 'b'# Iterate over each characteri = len(l)-1
while(i!=-1):
# Rule 1
if(l[i] == 'a'):
l[i] = 'dd'
# Rule 2
elif(l[i] == 'b'):
l.remove(l[i])
i = i-1
# Join the updated listn = ''.join(l)
print("New string is: ",n)
|
Outputs
Fake Tags
Fake tag
おわりに
問題点と解決策、そしてコードの実装を理解していただけたでしょうか。
全て自分で実装することができますよ お読みいただきありがとうございました。