首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在输入中不丢失0的情况下反转整数

在输入中不丢失0的情况下反转整数
EN

Stack Overflow用户
提问于 2013-05-06 05:59:08
回答 3查看 1.9K关注 0票数 1

我有下面的代码来反转一个整数输入。但是,如果我输入的输入以零开头,例如01234,它将返回整数4321而不是43210。我看过其他解决方案,但它们都是通过将输入作为字符串,然后反转字符串来解决问题的。但是,我需要我的输入是int类型。

有人知道我该怎么解决这个问题吗?

代码语言:javascript
运行
复制
public static int reverseInputNumber(int num){
    int reverse = 0;
    while(num!=0) {
        reverse = (reverse*10)+num%10;
        num /= 10;
    }
    return reverse;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-06 06:00:49

整数存储整数值,而不是对整数值的特定表示形式的编码。所以为了真正得到你想要的,你正在讨论颠倒一个整数的表示。

编辑:我想我应该添加一些代码来使用String来解决这个问题。

代码语言:javascript
运行
复制
public static int reverseInputNumber(int num)
{
    String reverse = StringBuilder(num + "").reverse().toString();
    return reverse;
}

第二次编辑:实际上,即使是这段代码也不会做你想让它做的事情。通过将int作为参数,您已经丢失了整数的原始表示形式。准确地说,没有函数可以只接受一个整数参数,并返回与其原始表示相反的内容。您只需要处理字符串或其他更合适的数据结构。

票数 2
EN

Stack Overflow用户

发布于 2013-05-06 07:17:11

在java中,使用0作为最高有效数字,它将数字解释为八进制数。因此,01234被转换为:

代码语言:javascript
运行
复制
4 + 3 x 8 + 2 x 8^(2) + 1 x 8^(3) = 668

因此,您最好使用其他答案中的一种转换为字符串的方法。

编辑:是一个没有StringBuffer等的版本:

代码语言:javascript
运行
复制
public String getReversed(int number) {
    char[] digitArray = String.valueOf(number).toCharArray();
    String strNum = "";

    for (int i = digitArray.length - 1; i >= 0; i--) {
        strNum += digitArray[i];
    }
    return strNum;
}

第二次编辑:颠倒char数组,然后在完成颠倒之后创建String,因为可能会创建一些O(n^2)操作,这可能会给垃圾收集器带来问题。

代码语言:javascript
运行
复制
public String getReversed(int number) {
    char[] digitArray = String.valueOf(number).toCharArray();
    char[] reversedDigitArray = new char[digitArray.length];

    for (int i = 0; i < digitArray.length; i++) {
        reversedDigitArray[i] = digitArray[digitArray.length - i - 1];
    }
    return new String(reversedDigitArray);
}

第三次编辑:使用就地算法交换字符。

代码语言:javascript
运行
复制
public static String getReversed(int number) {
    char[] digitArray = String.valueOf(number).toCharArray();
    int count = digitArray.length - 1;
    char tmp;

    for (int i = (count-1) >> 1; i >= 0; --i) {
        tmp = digitArray[i];
        digitArray[i] = digitArray[count - i];
        digitArray[count - i] = tmp;
    }
    return new String(digitArray);
}
票数 1
EN

Stack Overflow用户

发布于 2013-05-06 06:03:36

如果您的输入必须是int,则将其转换为String并反转。

代码语言:javascript
运行
复制
String reverseInt(int in){
    String a = Integer.toString(in);
    return new StringBuilder(a).reverse().toString();
}

如果你的输出必须是一个int,就不可能有一个前导的0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16389558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档