当前位置: 首页 > 面试题库 >

检查整数是否有重复的数字。没有字符串方法或数组

谢泽语
2023-03-14
问题内容

我正在尝试查看int是否具有相同数字的倍数。尝试不使用字符串方法或数组。我遇到的主要方法是hasDistinctDigits()。当重复数字位于末尾时有效,但当它们位于开始或中间时无效。

public static void main(String[] args) {
    System.out.println(hasDistinctDigits(12234));
}

public static boolean hasDistinctDigits(int number) {
    boolean returner = true;
    int count = 1;
    int newNum = number;
    int digit = 0;

    while (count < numDigits(number)) {         
        while (count < numDigits(newNum)) {
            digit = newNum % 10;
            newNum/=10;
            if (digit == getDigit(newNum, count)) {
                returner = false;
            }
            count++;                
        }
        count++;
    }
    return returner;
}

public static int numDigits(int number) {
    int count = 0;
    while (number != 0) {
        number /= 10;
        count++;
    }
    return count;
}

public static int getDigit(int number, int i) {
    int digit = 0;
    int count = 0;
    int originalNum = number;

    while (count <= i) {
        if (count == i) {
            digit = number % 10;
        }
        number /= 10;
        count++;
    }
    if (i > numDigits(originalNum)) {
        return -1;
    } else {
        return digit;
    }
}

}

如果运行此命令,您将看到‘2’重复出现,但该方法仍会评估true其应为的时间false


问题答案:

这是一个简短而甜蜜的版本:)

 private static boolean hasDistinctDigits(int number) {
     int numMask = 0;
     int numDigits = (int) Math.ceil(Math.log10(number+1));
     for (int digitIdx = 0; digitIdx < numDigits; digitIdx++) {
         int curDigit = (int)(number / Math.pow(10,digitIdx)) % 10;
         int digitMask = (int)Math.pow(2, curDigit);             
         if ((numMask & digitMask) > 0) return false;
         numMask = numMask | digitMask;
     }
     return true;
 }

它的工作方式非常简单。numMask是一个整数,用于存储已经遇到的数字(由于十进制系统编号只有10位,而整数给出16位,因此我们有足够的位数来存储出现的每个十进制数字)。

我们遍历数字中的所有数字。对于每个数字索引,我们在中获得实际数字curDigit。假设当前数字为5。然后,我们检查它是否将numMask的第5位提高了:如果是,那么我们已经5在过去遇到过a
,因此我们可以立即知道该数字没有所有不同的数字并返回false;否则,返回false。否则,我们修改numMask并提高第5位。

如果到最后,则不会遇到重复的数字。



 类似资料:
  • 所以我应该创建一个方法来检查字符串是否包含任何数字。如果有,它将返回“yes”,如果没有,它将返回“no”。到目前为止,我认为我已经做了所有正确的事情,但不确定如何使用indexOf()搜索0-9之间的任何数字。请注意,我是javascript的初学者,所以我将感谢初学者友好的回复。

  • 我正试图在表格上做错误检查。我想看看一个电话号码是否有效,看它是否包含所有号码。有没有办法确定一个字符串中是否只有NMBER?

  • 我需要检查字符串中是否只有数字,以便将其解析为int。我不允许使用try/catch语句。thusfar,我在这里尝试过的一切都没有奏效,这就是为什么我可能已经被问到了这个问题。以下是我正在尝试的: 它是从一个文件中读取的,如果第一个输入不是整数,那么下一个输入就是整数,但是当运行时,由于某种原因,我在else语句中得到了一个不匹配的结果。

  • 问题内容: 我正在使用既包含数字又包含字母数字或仅包含数字但不仅仅包含字母的字符串。为了测试错误匹配,我需要检查字符串是否至少包含一位数字,如果没有,则输出错误消息。我一直在使用以下代码: 有没有更Python化或更简单的方法可以做到这一点?另外,我不能仅检查字符串是否为字母数字,因为字符串可能包含各种符号(’-‘,空格等)。 问题答案: 这是正则表达式仅此而已的地方之一: 小样: 您可以使用@W

  • 本文向大家介绍JavaScript检查数字是否为整数或浮点数的方法,包括了JavaScript检查数字是否为整数或浮点数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript检查数字是否为整数或浮点数的方法。分享给大家供大家参考。具体如下: 检查是否为整数: 检查是否为浮点数: 希望本文所述对大家的javascript程序设计有所帮助。

  • 可能重复: 如何在Python中检查字符串是否为数字 Python-将字符串解析为Float或Int 例如,我想检查一个字符串,如果它不能转换为整数(使用),我如何检测它?