簡體   English   中英

在兩個數字中尋找共享數字的麻煩

[英]Troubles with looking for shared digits in two numbers

我需要檢查兩個數字是否有一些共享數字。 我的方法在測試時不返回任何內容。

我在這里想要做的是獲取第一個數字的每個數字,然后遍歷第二個數字以嘗試查找與第一個數字相等的另一個數字。 如果是這樣,我想返回true,否則,我要繼續檢查。

    public static boolean hasSharedDigit(int num1, int num2) {
        int digit1, digit2;
        boolean isShared;
        boolean isNum1TwoDigits = ((num1 >= 10) && (num1 <= 99)) ? true : false;
        boolean isNum2TwoDigits = ((num2 >= 10) && (num2 <= 99)) ? true : false;
        if ((!isNum1TwoDigits) || (!isNum2TwoDigits))
            return false;
        while (num1 > 10) {
            digit1 = num1 % 10;
             while (num2 > 10) {
                digit2 = num2 % 10;
                if (digit2 == digit1)
                    return true;
             }
             num1 /= 10;
        }
        return false;

    }

可能不是最有效的方法,但是您可以創建一個Set ,該Set包含由每個數字組成的數字,然后檢查交集是否為空。

public static Set<Integer> getDigits(int num)
{
  Set<Integer> result = new TreeSet<Integer>();

  if (num == 0)
    result.add(0);
  else
  {
    num = Math.abs(num);
    while (num > 0)
    {
      result.add(num % 10);
      num /= 10;
    }
  }

  return (result);

} // getDigits

public static boolean hasSharedDigit(int num1, int num2)
{
  Set<Integer> digits1 = getDigits(num1);
  Set<Integer> digits2 = getDigits(num2);
  digits1.retainAll(digits2);
  return (!digits1.isEmpty());
}

這是將數字轉換為字符數組並在兩個for循環中進行比較的基本解決方案

public static boolean hasSharedDigit(int num1, int num2) {
    if (num1 == num2) {
        return true;
    }

    char[] arr1 = String.valueOf(num1).toCharArray();
    char[] arr2 = String.valueOf(num2).toCharArray();

    for (char ch1 : arr1) {
        for (char ch2 : arr2) {
            if (ch1 == ch2) {
                return true;
            }
        }
    }
    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM