【leetcode】299. Bulls and Cows

题目如下:

解题思路:本题难度不太大,对时间复杂度也没有很高的要求。我的做法是用一个字典来保存每个字符出现的次数,用正数1记录标记secret中出现的字符,用负数1记录guess中出现的字符,这样每出现一次正负抵消,即表示出现了一次cow。

代码如下:

class Solution(object):
    def getHint(self, secret, guess):
        """
        :type secret: str
        :type guess: str
        :rtype: str
        """
        dic = {}
        bull = 0
        cow = 0
        for i in xrange(len(secret)):
            if secret[i] == guess[i]:
                bull += 1
            else:
                if dic.has_key(secret[i]):
                    if dic[secret[i]] < 0:
                        cow += 1
                    dic[secret[i]] += 1
                else:
                    dic[secret[i]] = 1

                if dic.has_key(guess[i]):
                    if dic[guess[i]] > 0:
                        cow += 1
                    dic[guess[i]] -= 1
                else:
                    dic[guess[i]] = -1

                if dic[guess[i]] == 0:
                    del dic[guess[i]]
                if dic[secret[i]] == 0:
                    del dic[secret[i]]

        return str(bull) + 'A' + str(cow) + 'B'

 

posted @ 2018-04-13 10:41  seyjs  阅读(221)  评论(0编辑  收藏  举报