再帰を使わずにPythonで文字列を逆順に反転する方法
プログラミングにおいて、文字列を逆順に並べ替えたい場面はよくあります。Pythonでは、再帰処理のような複雑な手法を使わなくても、負のインデックス(ネガティブインデックス)を活用することで、わずか1行のコードで文字列を反転させることができます。
インデックスとは
インデックスとは、文字列やリストなどに含まれる各要素の位置を表す番号のことです。Pythonでは先頭から数える正のインデックスだけでなく、末尾から数える負のインデックスもサポートされており、これにより柔軟に要素へアクセスできます。
サンプルコード
以下に、ユーザーから入力された文字列を逆順に表示するプログラムの例を示します。
my_string = str(input("Enter a string that needs to be reversed: "))
print("The string after reversal is: ")
print(my_string[::-1])実行結果
Enter a string that needs to be reversed: Jane The string after reversal is: enaJ
コードの解説
- input()関数を使って、ユーザーから反転したい文字列の入力を受け取ります。
- 入力された値はstr()で文字列型に変換され、変数my_stringに代入されます。
- print()関数によって、メッセージがコンソールに表示されます。
- スライス記法[::-1]により文字列全体が後ろから走査され、逆順になった結果がコンソールに出力されます。
[::-1]の仕組み
スライス記法は「[開始:終了:ステップ]」という形式で指定します。開始位置と終了位置を省略し、ステップを-1に設定すると、文字列が末尾から先頭へ向かって1文字ずつ読み取られます。その結果、元の文字列を完全に反転した新しい文字列が得られるのです。この手法は追加のループや再帰関数を必要とせず、簡潔かつ高速に動作するため、実務でも広く使われています。
-
Pythonで解く「逆文字列 II」― 2k文字ごとに先頭k文字を反転する方法
問題概要 文字列 s と整数 k が与えられます。文字列の先頭から数えて 2k 文字ごとのブロックについて、それぞれのブロック内の最初の k 文字を反転してください。ただし、以下のルールに従います。 残りの文字が 2k 文字未満で k 文字以上の場合: 最初の k 文字のみを反転し、残りは元のままにします。 残りの文字が k 文字未満の場合: 残りの文字をすべて反転します。 たとえば、入力が abcdefgh、k = 3 のとき、出力は cbadefhg となります。これは、最初の 6 文字 abcdef のうち先頭 3 文字 abc が cba に反転され、残りの gh は k 文字未満
-
Pythonで文字列を逆順に反転する方法|追加メモリ不要のインプレース手法
文字の配列が与えられたとき、追加のメモリ領域を使用せずに文字列を逆順に反転することを考えます。たとえば、入力が [H, E, L, L, O] である場合、期待される出力は [O, L, L, E, H] となります。 解法のアプローチ この問題は「Two Pointers(ツーポインタ)」と呼ばれる定番のテクニックで効率的に解けます。考え方はシンプルで、配列の両端から中央に向かって文字を交換していくだけです。 手順 2つのポインタを用意します:start = 0、end = 文字列の長さ - 1 s[start] と s[end] の文字を入れ替えます start を1つ増やし、end を