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; //没有
}
}
4 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
为什么我跑的结果是 true?
public class Test {
public static void main(String[] args) {
String[] arr = new String[2];
arr[0] = "1";
arr[1] = "1";
Assert.assertTrue(xh_repeat(arr));
}
public static 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; //没有
}
}
}
你的目的是检查字符串数组是否有重复的吧? 我觉得这样比较简单:
publi boolean isDuplicate(String[] arr) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.size() != arr.length;
}
繁花如伊
TA贡献2012条经验 获得超12个赞
想法基本没问题,但是没必要写的那么复杂,一旦遇到重复的了,就可以跳出循环了。写了个简单点的例子:
public boolean xh_repeat(array){
for(int i =0; i < array.length; i ++){
String temp = array[i];
for(int j = 0; j < array.length; j ++){
if(temp.equals(array[j])){
return true;
}
}
}
return false;
}
aluckdog
TA贡献1847条经验 获得超7个赞
虽然你代码风格非常烂,而且算法也不好,但是从代码来看,起码你字符串比较用的是equals方法,所以不可能返回false的。注意,传入的是字符串["1", "1"].
建议这种查找重复直接用map做就好了,空间换时间,O(1)的时间复杂度.
添加回答
举报
0/150
提交
取消