反転した数字を足した結果が回文数と判断する方法
例えば、与えられている数字が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);
/*
----------------------
おはよう
おはよう
*/
以上。他にも方法あればコメントください(__)
ディスカッション
コメント一覧
まだ、コメントがありません