Discuss 1ms寫法
public String getHint(String secret, String guess) {
int a = 0;
int b = 0;
int[] m1 = new int[10];
int[] m2 = new int[10];
for (int i = 0; i < secret.length(); i++) {
if (secret.charAt(i) == guess.charAt(i))
a++;
else {
m1[secret.charAt(i) - '0']++;
m2[guess.charAt(i) - '0']++;
}
}
for (int i = 0; i < 10; i++)
b += Math.min(m1[i], m2[i]);
return a + "A" + b + "B";
}
自己 2ms寫法
public String getHint(String secret, String guess) {
int acount = 0,bcount = 0;
int gca[] = new int[10];
StringBuilder sb = new StringBuilder(secret);
for(int i=0;i<secret.length();i++){
char sc = secret.charAt(i);
char gc = guess.charAt(i);
if(sc==gc){
acount++;
sb.replace(i,i+1,"a");
}
else
gca[gc-'0']++;
}
for(int i=0;i<sb.length();i++){
char c = sb.charAt(i);
if(c>='0'&&c<='9'&&gca[c-'0']-->0)
bcount++;
}
return acount+"A"+bcount+"B";
}
沒有留言:
張貼留言