题目:
https://leetcode-cn.com/problems/guess-the-word/
精髓在于Random
代码
public void findSecretWord(String[] wordlist, Master master) {
List<String> gussList = new ArrayList<>();
int n = wordlist.length;
for (int i = 0; i < n; i++) {
gussList.add(wordlist[i]);
}
Random random = new Random();
while (true) {
String s = gussList.get(random.nextInt(gussList.size()));//如果次次猜0,得憋屈死
int k = master.guess(s);
if (k == 6) {
return;
}
List<String> sls = new ArrayList<>();
for (String ss : gussList) {
if (getV(s, ss) == k) {
sls.add(ss);
}
}
gussList = sls;
}
}
private int getV(String s1, String s2) {
int num = 0;
for (int i = 0; i < 6; i++) {
if (s1.charAt(i) == s2.charAt(i)) {
num++;
}
}
return num;
}