對不起,如果我輸入錯誤,我是新人。我想創建一個采用陣列的方法,并回傳一個陣列,其中的數字在前一個陣列中具有相同的第一個和最后一個數字。示例:12 等于 1342。
我創建了這個 for 回圈來遍歷這些數字,但我不知道如何比較它們。
public int[] findDuplicates(int[] a) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i < a.length; i ) {
for (int j = i 1; j < a.length; j ) {
if ((//what do I write here) ) {
//and here
}
}
}
return result.stream()
.mapToInt(Integer::intValue)
.toArray();
}
uj5u.com熱心網友回復:
最簡單的方法是將您的數字決議為字串并進行比較。我是這樣做的:
public int[] findDuplicates(int[] a) {
List<Integer> result = new ArrayList<>();
boolean[] numbersThatHaveBeenAdded = new boolean[a.length];
for (int i = 0; i < a.length; i ) {
for (int j = i 1; j < a.length; j ) {
String iNumber = String.valueOf(a[i]);
String jNumber = String.valueOf(a[j]);
if (iNumber.charAt(0) == jNumber.charAt(0)
&& iNumber.charAt(iNumber.length()-1) == jNumber.charAt(jNumber.length()-1)) {
if (!numbersThatHaveBeenAdded[i]) {
result.add(a[i]);
numbersThatHaveBeenAdded[i] = true;
}
if (!numbersThatHaveBeenAdded[j]) {
result.add(a[j]);
numbersThatHaveBeenAdded[j] = true;
}
}
}
}
return result.stream()
.mapToInt(Integer::intValue)
.toArray();
}
我使用布爾陣列將我已經添加到結果中的數字保存在記憶體中,以避免重復。
uj5u.com熱心網友回復:
您可以使用 while 回圈 (number /= 10) 演算法來獲取第一個數字。
和數字 % 10 得到最后一個數字。
然后您可以將它們與 if 條件進行比較,如果為真,則將該數字添加到串列中。
并且不要忘記該方法的回傳型別它必須是 List
public List<Integer> findDuplicates(int[] array){
List<Integer> result = new ArrayList<>();
for (int i = 0; i < array.length; i ) {
int firstDigit = array[i];
int lastDigit = array[i] % 10;
while (firstDigit >= 10)
firstDigit /= 10;
if (firstDigit == lastDigit)
result.add(array[i]);
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/526599.html
標籤:爪哇数组
上一篇:陣列中的隨機唯一元素
