2020/05/26
はじめに
入力整数xが回文になっているか答える問題.
<例>
121 -> true
-121 -> false
10 -> false
コード全体
bool isPalindrome(int x) {
if(x<0) return false;
string str = to_string(x);
int left = 0;
int right = str.length()-1;
while(left < right){
if(str[left++] != str[right--]) return false;
}
return true;
}
解説
負値は回文になり得ないのでfalseを返す。
bool isPalindrome(int x) {
if(x<0) return false;
桁ごとに参照しやすくするためにstd::to_string()を用いて文字列に変換した。
string str = to_string(x);
回文かどうかの確認。
leftは左からrightは右から順に確認して行き、str[left]とstr[right]が異なる場合は回文ではないのでfalseを返す。
int left = 0;
int right = str.length()-1;
while(left < right){
if(str[left++] != str[right--]) return false;
}
「回文ではない」と判断されなかった場合は回文であるのでtrueを返す。
return true;
}