public boolean xh_repeat(String[] arry) {
//用于判斷是否有重復(fù)值的標(biāo)記
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];
//有重復(fù)值就count+1
if(temp.equals(temp2)){
count++;
}
}
//由于中間又一次會跟自己本身比較所有這里要判斷count>=2
if(count>=2){
flag=true;
}
}
if(flag){
return true;
}else{
return false; //沒有
}
}
4 回答

陪伴而非守候
TA貢獻1757條經(jīng)驗 獲得超8個贊
為什么我跑的結(jié)果是 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) {
//用于判斷是否有重復(fù)值的標(biāo)記
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];
//有重復(fù)值就count+1
if (temp.equals(temp2)) {
count++;
}
}
//由于中間又一次會跟自己本身比較所有這里要判斷count>=2
if (count >= 2) {
flag = true;
}
}
if (flag) {
return true;
} else {
return false; //沒有
}
}
}
你的目的是檢查字符串?dāng)?shù)組是否有重復(fù)的吧? 我覺得這樣比較簡單:
publi boolean isDuplicate(String[] arr) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.size() != arr.length;
}

繁花如伊
TA貢獻2012條經(jīng)驗 獲得超12個贊
想法基本沒問題,但是沒必要寫的那么復(fù)雜,一旦遇到重復(fù)的了,就可以跳出循環(huán)了。寫了個簡單點的例子:
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條經(jīng)驗 獲得超7個贊
雖然你代碼風(fēng)格非常爛,而且算法也不好,但是從代碼來看,起碼你字符串比較用的是equals方法,所以不可能返回false的。注意,傳入的是字符串["1", "1"].
建議這種查找重復(fù)直接用map做就好了,空間換時間,O(1)的時間復(fù)雜度.
添加回答
舉報
0/150
提交
取消