`

整数翻转(C++实现)

 
阅读更多
// Type your C++ code and click the "Run Code" button!
// Your code output will be shown on the left.
// Click on the "Show input" button to enter input data to be read (from stdin).

#include <iostream>
using namespace std;

class Solution {
public:
    int reverse(int x) {
        int f = x<0 ? -1 : 1;
        x = abs(x);
        int d = digit(x);
        for(int i = 1; i <= d/2; i++) {
            swap(x, i, d-i+1);
        }
        return x*f;
    }
    
    int digit(int x) {
        int d = 0;
        while(x > 0) {
            x = x / 10;
            d++;
        }
        return d;
    }
    
    void swap(int &x, int i, int j) {
        int ei = vai(x, i);
        int ej = set_val(x, j, ei);
        set_val(x, i, ej);
    }
    
    int set_val(int &x, int i, int e) {
        assert(i >= 1);
        int dt = pow(10, i);
        int t = x % dt;
        if(i-1 <= 0) {
            x = x - t + e;
            return t;
        }
        dt /= 10;
        int ei = (t - x % dt) / dt;
        x += (e - ei) * dt;
        return ei;
    }
    
    // i start from 1
    int vai(int x, int i) {
        assert(i >= 1);
        int e = pow(10, i);
        int t = x % e;
        if (i-1 <= 0) return t;
        e = pow(10, i-1);
        t = (t - x % e) / e;
        return t;
    }
};


int main() {
    
    Solution *s = new Solution;
    
    int i = 12304;
    cout<<i<<endl;
    int r = s->reverse(i);
    cout<<r<<endl;
    
    return 0;
}

欢迎关注微信公众号——计算机视觉:

分享到:
评论

相关推荐

    SHA-256算法的C++实现及demo

    在C++实现SHA-256时,通常会使用`std::vector`来存储中间计算结果,以及`uint32_t`类型来表示32位的单词。同时,为了实现位操作,可能需要使用位左移`、位右移`&gt;&gt;`和异或`^`等操作符。考虑到效率,可能还需要用到位...

    c++ 一个二进制串转化为整数的解决方法

    您可能感兴趣的文章:C++ 十进制转换为二进制的实例代码C++实现string存取二进制数据的方法C++实现读入二进制数并转换为十进制输出详解C++编程中对二进制文件的读写操作C++二进制翻转实例分析C++中几种将整数

    翻转从终端输入的整数位

    在压缩包中的文件名为“0508ReverseDigits”,很可能这是一个示例代码或者练习题目,其中包含了具体实现翻转整数位的代码。如果你能访问这个文件,可以查看其内容以了解更多细节。 总的来说,完成这个任务需要理解...

    c++-c++编程基础之leetcode题解第7题整数反转.zip

    C++代码实现: ```cpp int reverse(int x) { long long res = 0; bool is_negative = x ; x = is_negative ? -x : x; // 处理负数 while (x != 0) { int last_digit = x & 1; // 获取最低位 res = (res ) | ...

    c语言编程:实现数字的翻转

    C语言数字翻转实现详解 C语言编程中,数字的翻转是一个常见的编程题目。数字的翻转指的是将一个数字的位数反转,例如将数字123翻转为321。下面我们将通过两个不同的方法来实现数字的翻转。 方法一:使用while循环...

    作业长整数加法.zip

    本作业"作业长整数加法.zip"关注的是如何利用C++元编程来实现编译时的长整数加法,特别是针对编译期数组的操作。以下将详细阐述涉及的知识点: 1. **C++元编程基础**: - 元编程分为运行时元编程和编译时元编程。...

    NOIP2011普及组复赛试题_数学翻转

    #### C++代码实现详解 ```cpp #include int main() { int x, s = 0; scanf("%d", &x); // 读取输入的整数x if (x ) { // 如果x为负数 printf("-"); // 输出负号 x = x * (-1); // 将x转换为正数 } while...

    c++ bitset实现

    `C++ bitset` 是一个内置的类型,...此外,还可以学习如何编写高效的C++代码,特别是对于底层数据结构和算法的实现。通过这样的实践,开发者可以更好地理解C++标准库的工作原理,并能根据特定需求定制自己的数据结构。

    十进制整数的四则运算

    ### 十进制整数的四则运算:C++实现详解 #### 一、概述 在计算机科学领域,实现大整数的算术运算是一项基本而重要的任务。本篇文章将详细解析一个C++程序,该程序能够处理任意大小的十进制整数,并实现了基本的...

    翻转图像(翻转+取反)1

    在编程领域,特别是...总结来说,这个问题是关于如何在编程中处理二进制矩阵,包括水平翻转和反转两个步骤,且提供了一个简洁有效的 C++ 实现。这对于理解矩阵操作、熟悉标准库函数以及优化算法性能都是很好的练习。

    c++初级学习指南及其代码

    通过翻转数字并将结果与原数字进行比较来实现。 ##### 7. 使用指针查找数组中的最大值和最小值 ```cpp void max_min(int* p, int len, int* pmax, int* pmin) { *pmax = p[0]; *pmin = p[0]; for (int i = 0; i ...

    图片的旋转与翻转.rar

    - **角度**:图片旋转通常涉及90度、180度和270度的整数倍旋转,也可实现任意角度的精确旋转。 - **中心点**:旋转的中心点可以是图片的几何中心,也可以自定义为图像的任意点。 - **保持比例**:为了防止图像...

    c++中递归知识

    根据给定文件的部分内容,我们可以总结出C++中递归的基本概念及二进制运算相关的知识点。接下来将详细解释这些知识点,并确保它们紧密围绕标题和描述的要求。 ### C++中递归基础知识 #### 什么是递归 递归是一种...

    煎饼排序(c++)1

    煎饼排序是一种特殊的排序算法,它的操作基于数组中的元素,通过类似于煎饼翻转的过程来实现排序。在煎饼排序中,你可以选择数组中的任意一个元素作为“煎饼”的顶部,然后将其及其以下的所有元素反转,这个过程就像...

    c/c++常见面试题

    在本节中,我们将讨论一些常见的 C/C++ 面试题,包括字符串处理、查找子串、strcpy 函数实现、字符串翻转、strcmp 函数实现等。 1. 查找子串出现次数 在给定的代码中,我们可以看到一个查找子串出现次数的函数 ...

    C++常用库函数

    通过这些基本位运算,我们可以实现如设定、清除、翻转位等操作,这对于处理位集或进行高效的计算非常重要。例如,要将一个数的最后一位设置为1,可以使用`x | 1`;要清除最后一位,可以使用`x & (x-1)`;要取反最后...

    图片的旋转与翻转.e.rar

    1. **编程实现**:通过编程语言,如Python、Java、C++等,利用图像处理库进行旋转和翻转,需要理解图像矩阵操作和相应的库函数。 2. **图形用户界面工具**:很多图像编辑软件,如Photoshop、GIMP等,提供直观的旋转...

    让数字反向输出,轻松翻转数字

    本文将深入探讨如何实现"让数字反向输出,轻松翻转数字"这一功能,并以C++编程语言为例,解析相关知识点。 首先,理解问题的核心:给定一个正整数,我们需要得到它的反向形式,即从个位开始到最高位的顺序。例如,...

    遗传算法求解基本TSP问题C++

    在C++编程环境下,实现遗传算法求解TSP问题涉及到以下几个关键知识点: 1. **编码方案**:遗传算法中的个体通常用二进制串或整数数组表示,每个元素对应一个城市的访问顺序。例如,用0和1编码,0表示未访问,1表示...

Global site tag (gtag.js) - Google Analytics