【C言語入門】文字列が回文(パリンドローム)かどうかを判定するプログラムの書き方
回文(パリンドローム)とは、前から読んでも後ろから読んでも同じになる単語・数字・フレーズなどの文字列のことです。例えば「madam」「racecar」といった単語や、数字の「10801」などが回文の代表例として挙げられます。
ある文字列を逆順に並べ替えた結果が元の文字列と完全に一致する場合、その文字列は回文であると判断できます。つまり、回文かどうかを調べるには、1文字目と最後の文字、2文字目と後ろから2番目の文字…というように、先頭と末尾から順に対応する文字同士を比較し、すべて一致するかどうかを確認すればよいのです。
入力例と出力例
- 入力: naman
出力: string is a palindrome(回文です) - 入力: tutorials point
出力: string is not a palindrome(回文ではありません)
回文判定の仕組み
C++で与えられた文字列が回文かどうかを判定するプログラムでは、まず入力された文字列の長さを取得します。次に、ループ処理を使って先頭の文字と末尾の文字、2番目の文字と後ろから2番目の文字というように、文字列の終わりまで順番に比較していきます。
比較の過程で1組でも異なる文字が見つかった場合はフラグを立てて処理を中断し、その文字列は回文ではないと判定します。逆に、すべての対応する文字が一致したままループが完了すれば、その文字列は回文であると結論付けられます。
サンプルコード
#include <iostream>
#include<string.h>
using namespace std; {
int main(){
char string1[]={"naman"};
int i, length;
int flag = 0;
length = strlen(string1);
for(i=0;i < length ;i++){
if(string1[i] != string1[length-i-1]) {
flag = 1;
break;
}
}
if (flag==1){
printf(" string is not a palindrome");
} else {
printf(" string is a palindrome");
}
return 0;
}
}
実行結果
string is a palindrome
補足:大文字・小文字の扱いについて
注意: このプログラムは大文字と小文字を区別します。例えば「Madam」のように大文字が含まれる場合、「M」と「m」は別の文字として扱われるため、回文とは判定されません。大文字小文字を無視して判定したい場合は、比較前に tolower() 関数などを使ってすべての文字を小文字(または大文字)に揃えておく工夫が必要です。
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列