Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列が回文かどうかを判定するプログラム

問題概要

文字列 s が与えられたとき、その文字列が回文(パリンドローム)であるかどうかを判定します。回文とは、前から読んでも後ろから読んでも同じになる文字列のことです。

たとえば、入力が s = "racecar" の場合、「racecar」を逆から読んでも「racecar」であるため、出力は True になります。

解法のアプローチ

この問題は以下の手順で解くことができます。

  • 文字列 s を反転したものを t とする
  • t が s と一致する場合は True を返す
  • そうでない場合は False を返す

Pythonではスライス記法 [::-1] を使うことで、文字列を簡単に反転できます。

実装例

class Solution:
    def solve(self, s):
        t = s[::-1]
        if t == s:
            return True
        else:
            return False

ob = Solution()
print(ob.solve("racecar"))

入力

"racecar"

出力

True

より簡潔な書き方

上記のコードは、if文を使わずに次のように1行で書くこともできます。

def solve(self, s):
    return s == s[::-1]

s[::-1] で元の文字列を反転させ、そのまま s と比較することで、結果を直接ブール値として返せます。この書き方はPythonらしい簡潔な表現であり、可読性も高くなります。

計算量について

このアルゴリズムの時間計算量は O(n)(n は文字列の長さ)、空間計算量は反転した文字列を新しく作成するため O(n) となります。短い文字列であれば十分実用的ですが、非常に大きな文字列を扱う場合は、両端から中央へ向かってポインタを移動しながら比較する方法(空間計算量 O(1))も検討するとよいでしょう。

  1. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ

  2. 文字列が空かどうかをチェックするPythonプログラム

    この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文