マゴとアルゴリズムを学ぶleetcode_09


引き続き馬兄とLeetCodeのアルゴリズムをブラシして、微信の学習グループの人数は百人を超えて百人の学習活動があります.馬さんのコラム-馬志峰のプログラミングノート
タイトルleetcode_09
整数が回文数かどうかを計算するのですが、テーマは簡単です.っていうか、私もこんな問題しかできません.
問題を解く構想.
題意のwithout extra spaceについてはあまり理解していません.私がもう一度bをintすればいいのではないでしょうか.に尋ねる
まず負数は必ず回文数が存在しないので,負数の場合は除外する.また、メモリオーバーフローの場合、1つの数が反転した後にメモリオーバーフローが発生した場合、2つの数が等しくないため、返信数ではないに違いありません.1つの数自体がオーバーフローしている場合は、入力することはできませんので、メモリオーバーフローの問題はコード上考慮しなくてもいいです.最後の特殊な状況0は、単独で説明します.
私は反転で作った反転コードです.
while(val)
  {
     b = b*10+val%10;
     val=val/10;
  }

この反転思想は最も普通の思想で、見た反転数はすべてこの思想で書いたようだ.もっといいことがあったら教えてください.
完全なコードは次のとおりです.
class Solution {
public:
    bool isPalindrome(int x) {
        int b = 0,val = x;
        if(x == 0)
         return true;
        if(x < 0)
            return false;

        else
        {
        while(val)
          {   
            b = b*10+val%10;
            val = val/10;
          }
         if(x == b)
            return true;
         else
            return false;
        }
    }

};

問題
以前はxを直接ループに入れて比較していたが、答えはずっとfalseで、呆然とした顔をしていた.そしてxを入力するとxの値が変わり,いずれにしてもxは0であることが分かった.だからxをvalに割り当てます.valを計算します.題意に反するのではないでしょうか.
その他の考え方
グループの中で1人の同級生が反復器で作ったコードを見たのは以下の通りです.
for(auto it = b.rbegin(); it != b.rend(); ++it) //           
    n.push_back(*it);                           //           ,            。

実は1つの空間を申請して数を入れて最後から読み取ることに相当します.これは間違いなく問題に違反していますが、C++の中に既製の車輪が提供されています.私たちはどうして使わないのですか.自分はすでにこの部分を学んだことがありますが、しかしどうしてこの既成のを思い付かなかったのですか?だからやはりよく本を読んで、生きているうちに活用しなければなりません.