zoukankan      html  css  js  c++  java
  • leetcode299

     1 class Solution:
     2     def getHint(self, secret: str, guess: str) -> str:
     3         n1 = len(secret)
     4         n2 = len(guess)
     5         A,B = 0,0
     6         dicA,dicB= {},{}
     7         for i in range(n1):
     8             cur = secret[i]
     9             tar = guess[i]
    10             if cur == tar:
    11                 A += 1
    12             else:    
    13                 if cur not in dicA:
    14                     dicA[cur] = 1
    15                 else:
    16                     dicA[cur] += 1
    17                 if tar not in dicB:
    18                     dicB[tar] = 1
    19                 else:
    20                     dicB[tar] += 1
    21         for k,v in dicB.items():
    22             if k in dicA:
    23                 B += min(v,dicA[k])
    24         return str(A) + 'A' + str(B) + 'B'

    两次遍历,第一次先计算A,如果对应位置的字符一样,则A+1;如果对应位置的字符不同,则分别计算两个串不匹配字符的数量。

    第二次计算B,在不匹配的字符中,两个字典都出现的,就符合B,其值为这个字符在两个字典中的值较小的。

  • 相关阅读:
    十天冲刺4
    单词统计
    十天冲刺3
    学习进度第十周
    十天冲刺2
    十天冲刺1
    梦断代码阅读笔记03
    学习进度第九周
    [强网杯 2019]Upload
    [2020 新春红包题]1
  • 原文地址:https://www.cnblogs.com/asenyang/p/11622363.html
Copyright © 2011-2022 走看看