Pythonで回文数かどうかの判定をするアルゴリズムをwhile文で実装する

スポンサーリンク

今日は回文シリーズについて、そしてPythonで回文を実装し識別する方法について学びます。

スポンサーリンク

回文とは何か?

ある数字が、前からも後ろからも全く同じに読める場合、その数字は回文と定義されます。

そして、おかしなことに、これは数字にだけ有効なのではありません。

文字列でも、前と後ろが同じなら、それは回文になります。

それでは、いくつかの例を見て、理解を深めましょう。

回文シリーズとは?

1. 回文数

二つの数字を考えてみましょう。

123321と1234561の2つの数字を考えてみましょう。

最初の数字123321は、前にも後ろにも読むと同じ数字です。

したがって、これは回文数です。

一方、1234561は逆から読むと1654321となり、元の数字と同じでないことは間違いない。

従って、回文番号ではありません。

2. 回文文字列

回文数字で説明した論理は、文字列にも当てはまります。

abaとabcという2つの文字列を考えてみましょう。

文字列abaは、どのように読んでも(逆から読んでも)同じ読み方です。

しかし、abcは逆から読むとcbaになり、元の文字列と等価ではありません。

したがって、abaは回文であり、abcは回文ではない。

Palindrome の検証方法は?

1. 回文数

ある数字が回文かどうかを調べるには、まず数字の入力を受け、入力として受け取った数字のコピーを作成します。

次に、反転した数を格納する新しい変数を作成し、それを0に初期化します。

mod 10とdivision by 10の演算を使用して数字を走査し、各ループで必ず反転した数字の変数であるThree*10に数字を追加します。

2. 回文文字列

文字列を調べるには、文字列を入力とし、その長さを計算します。

また、文字列の逆数を保存するために空の文字列を初期化します。

最後のインデックスから始まり、最初のインデックスに向かう減分ループを作成し、毎回、現在の逆文字列と得られた新しい文字を連結します。

PythonでPalindromeを実装する擬似コード

1. 回文番号

1
2
3
4
5
6
7
8
9
10
11
READ n
CREATE A COPY OF n as c_n
CREATE r_v = 0 ( to store reversed number)
WHILE n!=0:
d=n%10
r_v=r_v*10+d
n=n/10
if(c_n == r_v):
print "PALINDROME"
else:
print "NOT PALINDROME"

2. 回文文字列

1
2
3
4
5
6
7
8
9
10
READ s
CALCULATE length of s l_s
CREATE r_s = "" ( to store reversed string)
FOR i: l_s-1 -> 0
r_s + = s[i]
 
if(r_s == s):
PRINT "PALINDROME"
else:
PRINT "NOT PALINDROME"

Python で回文チェックを実装するコード

さて、回文とは何か、文字列と数値の両方で回文を処理する方法はおわかりいただけたと思いますので、両方のコードを紹介しましょう。

1. 回文実装。数字

Pythonを使って回文を調べてみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n = input()
n = int(n)
copy_n=n
result = 0
 
while(n!=0):
    digit = n%10
    result = result*10 + digit
    n=int(n/10)
 
print("Result is: ", result)
if(result==copy_n):
    print("Palindrome!")
else:
    print("Not a Palindrome!")

2. 回文実装。文字列

PythonでPalindromeの文字列を調べてみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
s = input()
l_s=len(s)
r_s=""
 
for i in range(l_s-1,-1,-1):
    r_s+=s[i]
 
print("Reuslt is: ",r_s)
if(r_s==s):
    print("PALINDROME")
else:
    print("NOT PALINDROME")

回文番号

123321
Result is:  123321
Palindrome!

回文の文字列

aibohphobia
Reuslt is:  aibohphobia
PALINDROME

まとめ

この記事では、回文について学び、それを実装する方法も学びました。

何かを学んでいただけたでしょうか?お読みいただきありがとうございました。

タイトルとURLをコピーしました