You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找首尾数字相同的整数的Java方法实现求助

解决方案

首先,你需要实现两个辅助方法来获取整数的首数字和尾数字,这是判断的核心:

private static int getFirstDigit(int num) {
    num = Math.abs(num); // 处理负数,确保首数字为正整数
    while (num >= 10) {
        num /= 10;
    }
    return num;
}

private static int getLastDigit(int num) {
    return Math.abs(num) % 10; // 处理负数,尾数字取绝对值后的余数
}

接着修改你原有的方法,在循环中比较两个数字的首尾数字是否分别匹配,同时避免重复添加元素到结果列表:

import java.util.ArrayList;
import java.util.List;

public class NumberMatcher {
    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++) {
                int firstI = getFirstDigit(a[i]);
                int lastI = getLastDigit(a[i]);
                int firstJ = getFirstDigit(a[j]);
                int lastJ = getLastDigit(a[j]);
                
                if (firstI == firstJ && lastI == lastJ) {
                    // 避免重复添加同一元素
                    if (!result.contains(a[i])) {
                        result.add(a[i]);
                    }
                    if (!result.contains(a[j])) {
                        result.add(a[j]);
                    }
                }
            }
        }
        return result.stream()
                .mapToInt(Integer::intValue)
                .toArray();
    }

    private static int getFirstDigit(int num) {
        num = Math.abs(num);
        while (num >= 10) {
            num /= 10;
        }
        return num;
    }

    private static int getLastDigit(int num) {
        return Math.abs(num) % 10;
    }
}

关键说明

  • 辅助方法通过Math.abs处理负数,确保数字正负不影响首尾数字的判断逻辑。
  • 双重循环遍历所有元素对,当两个元素的首、尾数字分别相同时,将它们加入结果列表,同时通过contains方法避免重复添加。
  • 最后利用Stream将List<Integer>转换为int[]类型返回。

内容的提问来源于stack exchange,提问作者eScape CS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:20:31