zltzlt 发表于 2019-10-25 19:55:36

Python:每日一题 263

今天的题目:

比较两个字符串 A 和 B,确定 A 中是否包含 B 中所有的字符。字符串 A 和 B 中的字符都是大写字母

示例 1:

输入:A = "ABCD",B = "ACD"
输出:True
示例 2:

输入:A = "ABCD",B = "AABC"
输出:False

{:10_298:}欢迎大家一起答题!{:10_298:}

冬雪雪冬 发表于 2019-10-25 20:10:04

def fun(A, B):
    alpha =
    dictA = {i: A.count(i) for i in alpha}
    dictB = {i: B.count(i) for i in alpha}
    for i in alpha:
      if dictA < dictB:
            return False
    return True

zltzlt 发表于 2019-10-25 20:13:01

冬雪雪冬 发表于 2019-10-25 20:10


恭喜通过!

执行用时:101 ms

danteer 发表于 2019-10-25 20:28:33

def func(stra,strb):
    for each in strb:
      if not each in stra:
            return False
      else:
            stra = stra.replace(each,'',1)
    return True

zltzlt 发表于 2019-10-25 20:29:57

danteer 发表于 2019-10-25 20:28


恭喜通过!

执行用时:101 ms

Unicorn# 发表于 2019-10-25 20:31:46

def check(A, B):
    A = list(A)
    for each_b in B:
      for each_a in A:
            if each_a == each_b:
                A.remove(each_a)
                each_b = 0
                break
      if each_b:
            return False
    return True

zltzlt 发表于 2019-10-25 20:32:14

Unicorn# 发表于 2019-10-25 20:31


恭喜通过!

执行用时:101 ms

阴阳神万物主 发表于 2019-10-25 20:48:02

本帖最后由 阴阳神万物主 于 2019-10-25 21:26 编辑

我有点迷了,不是说确定 A 中是否包含 B 中所有的字符
吗?那么 示例2 不该是返回的 True 吗?
A:'ABCD' B: 'AABC' 不该是包含了吗?B 里面并没有出现不属于 A 的字母啊。
即便如此,还是让我有点想回答呢,于是(代码中有着吐槽……)
def solve_alpha(A:str,B:str)->bool:#没有数量上的比较,仅仅针对关键词“包含”
    a = set(A)
    b = set(B)
    if len(b)>len(a):#好像多了些什么
      return False
    else:
      for each in b:
            if each not in a:#有奇怪的东西混进去了
                return False
      return True
def solve_bata(A:str,B:str)->bool:#有数量上的比较,这样的话 A 更像是仓库的感觉
    b = set(B)
    if len(b)>len(set(A)): #多了些东西啊喂!
      return False
    else:
      for each in b:
            if B.count(each) > A.count(each):#残念,客人萨玛,存量不足啊……
                return False
      return True
#预防万一,我理解到的两种情况都写了
#校验者看着办吧,画圈圈……
if __name__ == "__main__":
    #alpha,虽然我倾向于这个……
    #print("示例1 输出:",solve_alpha("ABCD","ACD"))
    #print("示例2 输出:",solve_alpha("ABCD","AACB"))
    #bata,但是这个好像保险点……
    print("示例1 输出:",solve_bata("ABCD","ACD"))
    print("示例2 输出:",solve_bata("ABCD","AACB"))
   


__mrsq__ 发表于 2019-10-25 20:48:05

def is_subset(A,B):
    visited = []
    for cha in B:
      if cha not in visited:
            visited.append(cha)
            if B.count(cha) > A.count(cha):
                return False
    return True
A = "AABCD"
B = "AACD"
print(is_subset(A,B))

__mrsq__ 发表于 2019-10-25 20:53:23

阴阳神万物主 发表于 2019-10-25 20:48
我有点迷了,不是说吗?那么 示例2 不该是返回的 True 吗?
A:'ABCD' B: 'AABC' 不该是包含了吗?B 里面并 ...

我和你有同样的疑问,但看了红字‘所有的字符’,强调了‘所有’,可能就包含重复吧

阴阳神万物主 发表于 2019-10-25 21:05:39

__mrsq__ 发表于 2019-10-25 20:53
我和你有同样的疑问,但看了红字‘所有的字符’,强调了‘所有’,可能就包含重复吧

你想想啊,26个英文字母能够组成所有的英文单词吧?
换句话说就是,26个英文字母包含了所有的英文单词啊!
再说了,“所有”、“一切”、“全部”之类的全称量词本身就很模糊啊!
很容易产生歧义的啊!
比如:“所有的语言最后都会编译为机器码” 这种话啊!在电脑上目前的确如此,但如果说让人去执行呢?不都得让执行的人能理解意思吗?如果让一个普通人去执行机器码的内容,就是在强人所难啊。这时候要达到效果就得是:“所有的语言最后都会编译为他能理解的语言”

__mrsq__ 发表于 2019-10-25 21:09:30

阴阳神万物主 发表于 2019-10-25 21:05
你想想啊,26个英文字母能够组成所有的英文单词吧?
换句话说就是,26个英文字母包含了所有的英文单词啊 ...

你说的对,这个不咬文嚼字都让人感觉很有歧义
只能根据范例去强行理解了

塔利班 发表于 2019-10-25 21:26:24

def f(A,B):
    a=len(A)
    b=len(B)
    if a>=b:
      d={}
      for i in range(a):
            d]=d.get(A,0)+1
            if i<b:
                d]=d.get(B,0)-1
      for e in d.values():
            if e<0:
                return False
      return True
    else:
      return False

panheng 发表于 2019-10-25 21:27:47

def answer(A: str, B: str):
    if len(B) > len(A):
      return False
    lst = list(A)
    for char in B:
      if char not in lst:
            return False
      else:
            lst.remove(char)
    return True

panheng 发表于 2019-10-25 21:36:32

阴阳神万物主 发表于 2019-10-25 21:05
你想想啊,26个英文字母能够组成所有的英文单词吧?
换句话说就是,26个英文字母包含了所有的英文单词啊 ...


字符“串”B中所有“字符”理解为B中所有元素,而不是去重后的不相同元素。

否则题目变成集合求交集了

zltzlt 发表于 2019-10-25 21:36:41

阴阳神万物主 发表于 2019-10-25 20:48
我有点迷了,不是说
吗?那么 示例2 不该是返回的 True 吗?
A:'ABCD' B: 'AABC' 不该是包含了吗?B 里面 ...

A 中只有一个 A,B 中有两个 A

zltzlt 发表于 2019-10-25 21:38:28

本帖最后由 zltzlt 于 2019-10-25 21:41 编辑

panheng 发表于 2019-10-25 21:36
字符“串”B中所有“字符”理解为B中所有元素,而不是去重后的不相同元素。

否则题目变成集合求交集 ...

没错,我一开始也是按集合的思路解题的,到后面发现错了{:10_250:}

zltzlt 发表于 2019-10-25 21:39:31

阴阳神万物主 发表于 2019-10-25 20:48
我有点迷了,不是说
吗?那么 示例2 不该是返回的 True 吗?
A:'ABCD' B: 'AABC' 不该是包含了吗?B 里面 ...

大家的运行时间都相同啊

执行用时:101 ms

zltzlt 发表于 2019-10-25 21:40:17

塔利班 发表于 2019-10-25 21:26


恭喜通过!

执行用时:101 ms

zltzlt 发表于 2019-10-25 21:40:51

panheng 发表于 2019-10-25 21:27


恭喜通过!

执行用时:101 ms
页: [1] 2 3
查看完整版本: Python:每日一题 263