この記事では、簡単な問題を理解することにします。
問題の名前は「置換と削除の問題」で、ある特定の文字を別の文字列に置換し、ユーザーが入力した文字から特定の文字を削除することになります。
つまり、ある文字を別の文字列または文字群に置き換え、入力からある文字を削除する必要があることがわかります。
これから行う2つのルールは次のとおりです。
-
- 「a」をダブル「d」に置き換える (
dd
)
- 「a」をダブル「d」に置き換える (
- b` の出現箇所をすべて削除します。
ステップ 1 と 2: N の入力を受け取り、それを文字配列に変換する
Python の input
関数で入力を受け取り、list
関数で入力文字列をパラメーターとして文字配列を作成します。
1
2
3
4
|
# 1. Taking input n = input ()
# 2. Convert into a list of characters l = 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 character i = 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 list n = ''.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 input n = input ()
# 2. Convert into a list of characters l = list (n)
print ( "String entered by user is: " ,n)
# Rule 1 : Replace 'a' with 'dd' # Rule 2 : Remove each 'b' # Iterate over each character i = 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 list n = ''.join(l)
print ( "New string is: " ,n)
|
Outputs
Fake Tags
Fake tag
おわりに
問題点と解決策、そしてコードの実装を理解していただけたでしょうか。
全て自分で実装することができますよ お読みいただきありがとうございました。