首页 > 试题广场 >

整数反转

[编程题]整数反转
  • 热度指数:8515 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
输入一个有符号整数,输出该整数的反转值。

输入描述:
一个整数


输出描述:
一个整数
示例1

输入

123

输出

321
示例2

输入

-123

输出

-321
示例3

输入

200

输出

2

备注:
输入的整数为32位整数
#include<iostream>
using namespace std;
int main()
{
    int input;
    cin >> input;
    int output = 0;
    while(input!=0)
    {
        output=output*10+input%10;
        input/=10;
    }
    cout<<output;
}
发表于 2018-09-13 11:59:13 回复(10)

Python3解法

a = input()
res = a[::-1].lstrip("0") if "-" not in a else "-" + a[1::][::-1].lstrip("0")
print(res if res else "0")
  • 注意有尾数为0的情况。如果尾数有0,要把它去掉,(例如200翻转以后为002);也要注意特殊情况(例如输入为0去掉后就为空了)。
发表于 2019-02-24 11:16:19 回复(0)
import java.util.Scanner;

public class Main {
    public static int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            rev = rev * 10 + +x % 10;
            x /= 10;
        }
        return rev;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int input = in.nextInt();
        System.out.println(reverse(input));
    }
}

发表于 2018-09-15 07:41:28 回复(3)
a =input()
print((a[0]=='-' and (-1*int(a[1:][::-1]))) or int(a[::-1]))
编辑于 2018-09-15 15:05:52 回复(0)
先对绝对值反转,反转完成后再添加符号
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String strNum;
        while((strNum = br.readLine()) != null){
            int num = Integer.parseInt(strNum);
            System.out.println(solve(num));
        }
    }
    
    // 反转整数
    private static int solve(int num) {
        boolean flag = false;
        // 记录数字的符号
        if(num < 0) flag = true;
        num = Math.abs(num);
        int result = 0;
        while(num > 0){
            result = result * 10 + (num % 10);
            num /= 10;
        }
        return flag ? -result: result;
    }
}


发表于 2020-11-10 21:54:35 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,res=0;
    cin>>n;
    while(n!=0)
    {
        res=res*10+n%10;
        n=n/10;
    }
    cout<<res<<endl;
    return 0;
}

发表于 2019-06-25 14:52:01 回复(0)
import java.util.*;
public class Main
{
    public static int reverse(int x) 
    {
        int rev = 0;
        while (x != 0)
        {
            int pop = x % 10;
            x /= 10;
            if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE && pop > 7))
            {
                return 0;
            }
            if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE && pop < -8))
            {
                return 0;
            }
            rev = rev * 10 + pop;
        }
        return rev;
    }
    public static void main(String args[])
    {
        Scanner in = new Scanner(System.in);
        int input = in.nextInt();
        System.out.println(reverse(input));
    }
}
编辑于 2019-05-02 19:58:46 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int flag = 1; if (n < 0 ) { flag = -1; n = -n; }
        StringBuilder sb = new StringBuilder(String.valueOf(n));
        System.out.println(Integer.valueOf(sb.reverse().toString()) * flag);
        return;
    }
}
发表于 2019-02-13 20:31:59 回复(0)
a =input()
while a[-1] =='0'and len(a) > 1:
a =a[:-1]
if a[0] =='-':
a1 =a[1:]
a1 =eval(a1[::-1])
a2 =-a1
print(a2)
else:
a1 =eval(a[::-1])
print(a1)

编辑于 2018-09-07 16:34:14 回复(0)
#include <bits/stdc++.h>
usingnamespacestd;
 
 
intmain()
{
    string s;
    cin>>s;
    if(s.length()==1&&s[0]=='0'){cout<<0;return0;}
    intflag = 0;
    inti = 0;
    if(s[0]=='-'){
        flag = 1;
    }
    reverse(s.begin(),s.end());
    if(flag==0)
    {
        while(s[i]=='0')i++;
        for(i;i<s.length();i++)
            cout<<s[i];
    }
    if(flag==1){
        while(s[i]=='0')i++;
        cout<<'-';
        for(i;i<s.length()-1;i++)
            cout<<s[i];
    }
     
     
    return0;
}
编辑于 2018-09-12 12:59:16 回复(0)
#include<stdio.h>
#include<math.h>

int main()
{
    int num;
    scanf("%d", &num);
    bool isnegative = false;

    if (num < 0){
        isnegative = true;
        num = num * -1; 
    }

    int t_num[4];
    int i = 0;
 
    while(num > 10){
        t_num[i] = num % 10;
        num = num / 10;
        i++;
    }

    t_num[i] = num % 10;
    num = 0;

    for(int j=i; j>=0; j--){
        num = num + t_num[i-j]*pow(10, j);
    }

    if(isnegative){
        num = -1 * num;
    }
 
    printf("%d", num);
}


编辑于 2018-09-10 21:19:16 回复(0)
n =int(input())
nn =str(n)
if n ==0:
    print(0)
elif n>0:
    nnn =nn[::-1]
    print(int(nnn))
else:
    nnn =nn[::-1][:-1]
  print(-1*int(nnn))

发表于 2018-09-12 14:14:17 回复(0)
//0-1背包问题  //设m为背包剩余容量
//n为可能的物品集合
import java.util.*;
public class Main {
static int re =0;//输出结果
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m= scanner.nextInt();
        int temp = n*(n+1)/2;
            //判断[0-1]累加是否可以组成m
        if(m>temp){
            System.out.println(0);
            return;
        }else if(m==temp){
            System.out.println(1);
        }else{
            tool(n,m);//递归查找所有可能的组合
        }
        System.out.println(re);
    }

    private static void tool(int n, int m) {

        if (n > 0&&m>0) {//当m剩余数和n剩余数大于0时表示可以继续查找
            if(m-n==0){//当背包剩余0时表示找到结果
                re++;
            }
                    //对任意一个物品n,都有是否放入背包的可能
            tool(n-1,m);//不放
            tool(n-1,m-n);//放
        }
    }
}

发表于 2018-09-07 23:08:15 回复(0)
#include<iostream>
int main()
{
    int x;
    while(std::cin>>x)
    {
        int num=0;
        if(x>0)
        {
            while(x/10>0)
        {
            num=10*num+(x%10);
            x/=10;
        }
        num=10*num+(x%10);
        std::cout<<num<<std::endl;
        }
        if(x<0)
        {
            x=-x;
            while(x/10>0)
        {
            num=10*num+(x%10);
            x/=10;
        }
        num=-(10*num+(x%10));
        std::cout<<num<<std::endl;
        }
        if(x==0)std::cout<<0<<std::endl;

    }
    return 0;
}
发表于 2020-09-08 17:47:32 回复(0)
#include "stdlib.h"
#include "stdio.h"


int main()
{
    int a,len,i;
    char s[100]={0},d[100]={0};
    
    while(scanf("%d",&a) != EOF)
    {
        sprintf(s,"%d",a);
        len = strlen(s);
        d[0] = '-';
        if(s[0] == '-')
            for(i = 0;i<len;i++)d[i+1] = s[len-i-1];
        else
            for(i = 0;i<len;i++)d[i] = s[len-i-1];
        a = atoi(d);
        printf("%d\n",a);
    }
}


发表于 2020-01-25 02:31:46 回复(0)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    int integer;
        cin >> integer;
    if(integer == 0)
    {
        cout << 0;
        return 0;
    }
    int abs_value;
        abs_value = (integer >= 0) ? integer : -integer;
    string str_int;
        str_int = to_string(abs_value);
    reverse(str_int.begin(),str_int.end());
    string reverse_value;
    for(unsigned i = 0; i < str_int.size(); i++)
    {
        if(str_int[i] != '0')
        {
            reverse_value = str_int.substr(i);
            break;
        }
    }
    cout <<  ((integer >= 0) ? reverse_value : "-" + reverse_value);
    return 0;
}

编辑于 2019-04-22 09:43:07 回复(0)

/*************************************************************************
 > File Name: xiangfan.c
 > Author:
 > Mail:
 > Created Time: 2019年04月21日 星期日 04时56分55秒
 ************************************************************************/

#include<stdio.h>
 
int xiangfan(int num)
{
    int ago = num;
    int temp = 0;
    while(ago)
    {
        temp = temp*10 + ago%10;
        ago = ago/10;
    }

    return temp;
   
}

int main()
{
    int num;
    int result;

    scanf("%d",&num);

    result = xiangfan(num);

    printf("%d\n",result);


    return 0;
}



发表于 2019-04-21 20:04:19 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string data;
    getline(cin,data);
    reverse(data.begin(),data.end());
    int len=data.length();
    if(len==1&&data[0]=='0')
    {
        cout<<0;
        return 0;
    }

    int index=0;
    while(data[index]=='0')
    {
        ++index;
    }
    if(data[len-1]=='-')
    {
        cout<<"-";
        len=len-1;
    }
    for(int i=index;i<len;++i)
    {
        cout<<data[i];
    }

    return 0;
}
/*
可能为大数问题,无法存储数字而溢出,使用string
闭关进行反转,随后确定反转后的字符串第一个不为零的索引,并确定是否为复数,进行输出
*/
发表于 2019-04-17 13:07:50 回复(0)
 链接:https://www.nowcoder.com/questionTerminal/14733e0bfa9b474ba7cbe0bb2e459731 来源:牛客网
#include<iostream>
 
usingnamespacestd;
intmain(){
   intin;
   cin >> in;
   intout = 0;
   while(in){
       out = out*10 + (in%10);
       in /= 10;
   }
   cout << out << endl;
   return0;
}
 
 
/*
#include<iostream>
#include<vector>
#include<algorithm>
 
using namespace std;
int main(){
   int in;
   cin >> in;
   int flag = in>=0 ? 1 : -1;
   in = abs(in);
   int out = in;
   int bit = 1;
   while(out / 10){
       out /= 10;
       bit ++;
   }
   vector<int> v(bit);
   out = in;
   for(int i=0; i<bit; i++){
       v[bit-i-1] = out % 10;
       out /= 10;
   }
   reverse(v.begin(),v.end());
   for(int i=0; i<bit; i++){
       out = out*10 + v[i];
   }
   out *= flag;
   cout << out << endl;
   return 0;
}
*/

发表于 2019-04-10 23:16:41 回复(0)
public class Main {
    public static void main(String[] args) throws IOException {
        //把int类型转换成String类型的数据,再通过StringBuilder进行反转
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();
        int num = Integer.parseInt(s);
        int i = Math.abs(num);
        if (num < 0) {
            System.out.println(-1 * Integer.parseInt(new StringBuilder(String.valueOf(i)).reverse().toString()));
        } else {
            System.out.println(Integer.parseInt(new StringBuilder(String.valueOf(i)).reverse().toString()));
        }
    }
}


发表于 2019-04-09 14:59:27 回复(0)