★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: http://www.javashuo.com/article/p-hmwleknf-me.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
This problem is an interactive problem new to the LeetCode platform.git
We are given a word list of unique words, each word is 6 letters long, and one word in this list is chosen as secret.github
You may call master.guess(word)
to guess a word. The guessed word should have type string
and must be from the original list with 6 lowercase letters.微信
This function returns an integer
type, representing the number of exact matches (value and position) of your guess to the secret word. Also, if your guess is not in the given wordlist, it will return -1
instead.app
For each test case, you have 10 guesses to guess the word. At the end of any number of calls, if you have made 10 or less calls to master.guess
and at least one of these guesses was the secret, you pass the testcase.less
Besides the example test case below, there will be 5 additional test cases, each with 100 words in the word list. The letters of each word in those testcases were chosen independently at random from 'a'
to 'z'
, such that every word in the given word lists is unique.dom
Example 1: Input: secret = "acckzz", wordlist = ["acckzz","ccbazz","eiowzz","abcczz"] Explanation: returns -1, because is not in wordlist. returns 6, because is secret and has all 6 matches. returns 3, because has 3 matches. returns 2, because has 2 matches. returns 4, because has 4 matches. We made 5 calls to master.guess and one of them was the secret, so we pass the test case. master.guess("aaaaaa")"aaaaaa"master.guess("acckzz")"acckzz"master.guess("ccbazz") "ccbazz"master.guess("eiowzz")"eiowzz"master.guess("abcczz")"abcczz"
Note: Any solutions that attempt to circumvent the judge will result in disqualification.ide
这个问题是 LeetCode 平台新增的交互式问题 。函数
咱们给出了一个由一些独特的单词组成的单词列表,每一个单词都是 6 个字母长,而且这个列表中的一个单词将被选做秘密。测试
你能够调用 master.guess(word)
来猜单词。你所猜的单词应当是存在于原列表而且由 6 个小写字母组成的类型字符串
。
此函数将会返回一个整型数字
,表示你的猜想与秘密单词的准确匹配(值和位置同时匹配)的数目。此外,若是你的猜想不在给定的单词列表中,它将返回 -1
。
对于每一个测试用例,你有 10 次机会来猜出这个单词。当全部调用都结束时,若是您对 master.guess
的调用不超过 10 次,而且至少有一次猜到秘密,那么您将经过该测试用例。
除了下面示例给出的测试用例外,还会有 5 个额外的测试用例,每一个单词列表中将会有 100 个单词。这些测试用例中的每一个单词的字母都是从 'a'
到 'z'
中随机选取的,而且保证给定单词列表中的每一个单词都是惟一的。
示例 1: 输入: secret = "acckzz", wordlist = ["acckzz","ccbazz","eiowzz","abcczz"] 解释: 返回 -1, 由于 不在 wordlist 中. 6, 由于 就是秘密,6个字母彻底匹配。 返回 3, 由于 有 3 个匹配项。 返回 2, 由于 有 2 个匹配项。 返回 4, 由于 有 4 个匹配项。 咱们调用了 5 次master.guess,其中一次猜到了秘密,因此咱们经过了这个测试用例。 master.guess("aaaaaa")"aaaaaa"master.guess("acckzz") 返回"acckzz"master.guess("ccbazz") "ccbazz"master.guess("eiowzz")"eiowzz"master.guess("abcczz")"abcczz"
提示:任何试图绕过评判的解决方案都将致使比赛资格被取消。
1 /** 2 * // This is the Master's API interface. 3 * // You should not implement it, or speculate about its implementation 4 * class Master { 5 * public func guess(word: String) -> Int {} 6 * } 7 */ 8 class Solution { 9 func findSecretWord(_ wordlist: [String], _ master: Master) { 10 var wordlist = wordlist 11 var i:Int = 0 12 var x:Int = 0 13 while(i < 10 && x < 6) 14 { 15 var guess:String = wordlist[Int.random(in:0..<wordlist.count)] 16 var x:Int = master.guess(guess) 17 var wordlist2:[String] = [String]() 18 for w in wordlist 19 { 20 if match(guess, w) == x 21 { 22 wordlist2.append(w) 23 } 24 } 25 wordlist = wordlist2 26 i += 1 27 } 28 } 29 30 func match(_ a:String,_ b:String) -> Int 31 { 32 var matches:Int = 0 33 var arrA:[Character] = Array(a) 34 var arrB:[Character] = Array(b) 35 for i in 0..<a.count 36 { 37 if arrA[i] == arrB[i] 38 { 39 matches += 1 40 } 41 } 42 return matches 43 } 44 }