我試圖做一些事情,我有兩個數字(比如說123和321)。我想檢查第一個數字是否與第二個數字相同。我知道如果我單獨檢查1,2和3,該怎麼做,但我想檢查整個整數。換句話說,我需要一個代碼,上面寫着「如果x與和(以任意順序)具有相同的數字,那麼......」 任何幫助都非常感謝!如何檢查一個數字是否以任何順序包含它自己?
1
A
回答
2
不確定Java語法,但將每個數字轉換爲數組。按升序排列數組。轉換回數字並進行比較。
如果您不想完全匹配(即112233和123都共享相同的數字),然後遍歷1數組,並查看每個數字是否包含在另一個數字中。
1
此代碼會將這兩個整數轉換爲字符串,然後檢查字符串是否長度相同,第二個字符串是否包含第一個字符的所有字符。
public class Sandbox { //opens class
public static void main(String[] args) {
int x = 125;
int y = 321;
boolean hasNumbers = true;
String a = Integer.toString(x);
String b = Integer.toString(y);
if(a.length() == b.length()) {
for(int i = 0; i < a.length(); i++) {
if(!b.contains(String.valueOf(a.charAt(i)))) {
hasNumbers = false;
}
}
if(hasNumbers) {
System.out.println(x + " contains the digits of " + y);
}
else {
System.out.println(x + " does not contain the digits of " + y);
}
}
else {
System.out.println("The length of " + x + " and " + y + " are different");
}
}
}
你絕對可以整理它,但我相信它解決了你陳述的問題。
1
編輯:基本思想:該算法只是將出現在「a」中的所有數字存儲在一個集合中,並檢查是否存在「b」中不存在的任何數字。
這裏是一些實現這個邏輯的代碼。它基本上利用了這個事實,即Set不包含重複的元素。 HashSet可以執行add,包含在一個常量時間內,加上最大的數字大小設置爲10,該函數可以在O(n)中執行。
public boolean checkSameDigits(int x, int y){
String a = Integer.toString(x);
String b = Integer.toString(y);
Set digits = new HashSet();
for(int i = 0; i < a.length(); i++) {
digits.add(a.charAt(i));
}
for(int i = 0; i < b.length(); i++) {
if(!digits.contains(b.charAt(i)))
return false;
}
return true;
}
0
如果轉換每個數字到數字的排序列表,那麼你可以只比較這兩個名單:
private List<Integer> sortedDigits(int number, int base) {
assert number >= 0 && base > 0;
List<Integer> digits = new ArrayList<>();
for (int n = number; n > 0; n /= base)
digits.add(n % base);
digits.sort();
return digits;
}
那麼接下來sortedDigits(number1, 10).equals(sortedDigits(number2, 10))
將檢查數字是10爲基數
0
相當短的實施是爲了得到每一個char[]
,排序,並檢查它們是相同的:
import java.util.Arrays;
public class Whatever {
public static final boolean sameDigits(final int m, final int n) {
final char[] m2 = ("" + m).toCharArray();
final char[] n2 = ("" + n).toCharArray();
Arrays.sort(m2);
Arrays.sort(n2);
return Arrays.equals(m2, n2);
}
}
相關問題
- 1. 如何檢查字符串是否包含任何數字
- 2. 檢查一個字符串是否包含任何字符
- 3. 如何檢查數組以查看它是否包含零值?
- 4. Java,如何檢查一個字符串是否包含數字?
- 5. 如何檢查一個字符串是否包含任何一些字符串
- 6. 如何檢查一個arrayList以查看它是否包含另一個arrayList?
- 7. 檢查是否字符串包含任何順序的特定字符
- 8. c#如何檢查一個Long字符串是否包含任何字母?
- 9. 如何檢查一個字符串是否包含來自另一個字符串的任何字符?
- 10. 檢查字段是否包含任何數字?
- 11. 如何檢查是否輸入包含任何特殊字符
- 12. 是否有一個EventHandler可以檢查ListBox是否包含任何項目?
- 13. 檢查一個字符串是否包含任何字符串數組元素
- 14. 如何檢查一個字符串是否包含字典
- 15. 如何檢查一個字符是否包含特定字母
- 16. PHP - 如何檢查一個字符串是否包含任何文本
- 17. 如何檢查一個單詞列表是否包含任何字符串
- 18. 如何檢查一個TextView是否包含某個字符串
- 19. 如何檢查是否一個對象集合包含給定的順序
- 20. 如何檢查Django表單是否包含任何數據?
- 21. 如何檢查數組元素是否包含任何值
- 22. 檢查一個字符串是否包含任何一組字符串?
- 23. Crystal Reports檢查字符串是否包含任何數值
- 24. 檢查是否任何數組包含字符串 - strpos
- 25. Java - 查看一個字符串是否包含任何字符
- 26. 如何檢查數組參數是否包含一個值
- 27. 檢查一個字符串是否包含JavaScript中數組的任何元素
- 28. 如何檢查一個字段是否包含圓括號?
- 29. 如何檢查一個字符串是否包含char?
- 30. 如何檢查一個字符串是否包含在ArrayList中?
將兩個字符串拆分爲整數列表,對列表進行排序然後進行比較。 –
如果其中任何一個數字都是負數,您希望發生什麼? – sprinter
@sprinter我其實並沒有想過這件事。因爲我試圖做一個小型的博彩遊戲,所以這些數字不會是負面的。所以它會說:「如果你投注數字123,贏的數字是123,你贏600美元(作爲一個例子)。如果你投注123,贏的數字是231,你贏了200美元(因爲你有相同的數字,但是按照錯誤的順序),如果你投注了123並且數字是586,那麼你輸了。「如果數字是負數,我可能會說「這不是一個有效的投注或中獎號碼」。 – Andre