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;
}