题目:

    图片.png

    • 字符串转化成整数需要使用库函数,并且这种方式的效率也低,因从可以通过数学的方式,对数据进行处理,从后往前获取一个一个的数据。

    • 下面的四张图是关于比较过程的举例描述

    图片.png
    图片.png

    • 如何计算2的31次方的个位数的大小

    图片.png

    1. #include "iostream"
    2. using namespace std;
    3. class Solution {
    4. public:
    5. int reverse(int x) {
    6. int res = 0;
    7. int pop;
    8. while (x != 0) {
    9. pop = x % 10;
    10. x /= 10;
    11. if (res > INT_MAX / 10 || (res == INT_MAX / 10 && pop > 7))
    12. return 0;
    13. if (res < INT_MIN / 10 || (res == INT_MIN / 10 && pop < -8))
    14. return 0;
    15. res = res * 10 + pop;
    16. }
    17. return res;
    18. }
    19. };
    20. int main() {
    21. Solution s;
    22. cout << s.reverse(663275) << endl;
    23. }

    注意:下面是自己想的一种方式 ,可是后来经过验证是错误的,因为题目限制就是防止溢出,溢出就返回0,可是我写的会导致溢出,直接就会发生错误,因此需要在溢出之前就判断出来。

    1. #include "iostream"
    2. using namespace std;
    3. class Solution {
    4. public:
    5. int reverse(int x) {
    6. int res = 0;
    7. int pop;
    8. while (x != 0) {
    9. pop = x % 10;
    10. x /= 10;
    11. res = res * 10 + pop;
    12. if (res > INT_MAX)
    13. return 0;
    14. }
    15. return res;
    16. }
    17. };
    18. int main() {
    19. Solution s;
    20. cout << s.reverse(1534236469) << endl;
    21. }