public boolean xh_repeat(String[] arry) {
//用于判断是否有重复值的标记
boolean flag=false;
for (int i = 0; i < arry.length; i++) {
String temp=arry[i];
int count=0;
for (int j = 0; j < arry.length; j++) {
String temp2=arry[j];
//有重复值就count+1
if(temp.equals(temp2)){
count++;
}
}
//由于中间又一次会跟自己本身比较所有这里要判断count>=2
if(count>=2){
flag=true;
}
}
if(flag){
return true;
}else{
return false; //没有
}
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
为什么我跑的结果是 true?
你的目的是检查字符串数组是否有重复的吧? 我觉得这样比较简单:
想法基本没问题,但是没必要写的那么复杂,一旦遇到重复的了,就可以跳出循环了。写了个简单点的例子:
虽然你代码风格非常烂,而且算法也不好,但是从代码来看,起码你字符串比较用的是equals方法,所以不可能返回false的。注意,传入的是字符串["1", "1"].
建议这种查找重复直接用map做就好了,空间换时间,O(1)的时间复杂度.
肯定是false,因为for循环的第二次,count又置为0了。顺便帮你把代码改改
这种方式判断起来比较困难...并且...逻辑太多太复杂,不易读,并且易错
其实判重根本思路就是:是否有字符串出现一次以上,就代表有重复
所以根据这个思路,那可以有以下步骤
先把数组中的字符串进行分组,转化为一个map,key为字符串,value为其字符串出现的字数
最后就判断该map中,是否有一个value的值大于1即可
所以推荐用Java8的流来写就能达到这样直观的转换