int数组里的元素查重问题

来源:互联网 发布:注册淘宝账号 编辑:程序博客网 时间:2024/06/05 02:50
 今天,接到了个需求,判断一个整数数组中是否存在相同的整数。当时第一反应,是用两个for循环嵌套来实现这个需求,但是感觉有点普通,就突然想到,可以用索引来解决这个需求。 大致思路就是,判断这个元素在这个数组中第一次出现的位置和最后一次出现的位置是否一致,如果不一致,那么就是表明这个数组有不止一个这个元素,就可以返回false了。 那么,整数数组中没有indexOf方法,不太好弄,那谁有?String有这个方法,那就把整数数组转换成字符串,再来操作。但是还有一个问题就是,查询的时候会把子串也给找出来,就是你想找1,但是他可能把31的索引找到了。这就是比较坑的了,所以你需要判断你找到的这个左右是不是数字,如果不是数字,说明匹配到的是我想要的,而不是一个整数的一部分。 下面上代码:
    public static boolean isRepeat(int[] arr){        String str = Arrays.toString(arr);        System.out.println(str);        for(int i=0;i<arr.length;i++){            String s = arr[i]+"";            if(!Character.isDigit(str.charAt(str.indexOf(s)-1))&&                    !Character.isDigit(str.charAt(str.indexOf(s)+1))&&                    !Character.isDigit(str.charAt(str.lastIndexOf(s)+1))&&                    !Character.isDigit(str.charAt(str.lastIndexOf(s)-1))&&                    str.indexOf(s)!=str.lastIndexOf(s)){                return true;            }        }        return false;    }
            加油!                                                ——Lucifer   2017/7/28
原创粉丝点击