反転した数字を足した結果が回文数と判断する方法

https://himaise.com/php/

例えば、与えられている数字が123だとすると、まずはこの数字を反転させて足す処理が必要になる。
123 + 321 を計算すると、444。これで回文数ができたのでok。
だが、一回で計算が終われば良いが、371とかになると一回では処理が終わらない。

①数字を反転させる
②反転させた数字を足す
③もし、回文数になれば、②を出力して終了。回文数でないなら、①②の処理を繰り返す。

数字を反転

反転はstrrev()を使った。

回文数は、先頭と末の文字列が同じなので、それらを一つずつ切り出して、それらを比較して同じなら合計を出力して終了、違うならまた反転させて比較して調べるということをループさせれば、求められそう。

文字列の切り出し

文字列の切り出しは、mb_substr()を使った。

$a = mb_substr($goukei,0,1);//先頭
$b = mb_substr($goukei,-1);//最後

substrでもできるが、両者扱うバイト数が異なるので、数字以外だと違いが出てくる。
数字だと結果は同じだが、数字以外の文字列で試すとsubstrでは文字化けする。

//数字の場合
$a = 2345676543;

echo mb_substr($a, 0, 4)."\n";

echo substr($a, 0, 4);

/*
--------------------
2345
2345
*/
//数字以外の文字列
$a = "おはようございます";

echo mb_substr($a, 0, 4)."\n";

echo substr($a, 0, 4);

/*
----------------------
おはよう
おはよう
*/

以上。他にも方法あればコメントください(__)

php, programming

Posted by 異世界攻略班