【问题标题】:I want to write a function that takes 2 strings and returns True if they are anagrams(any word that have the same letters in different order) [duplicate]我想编写一个函数,该函数接受 2 个字符串并在它们是字谜时返回 True(任何具有不同顺序的相同字母的单词)[重复]
【发布时间】:2017-05-05 08:34:48
【问题描述】:

我已经尝试过了,我希望程序将 S1 中的每个字母与 S2 中的每个字母进行比较,有什么想法吗?

s1= "Army"
s2= "Mary"
def anagram(S1,S2):
    q=0
    w=0
    S1.lower()
    S2.lower()
    for i in S1:
        if S1[q]==S2[w]:
            print S1[q]
        else:
            q+=1
            w+=1

anagram(s1,s2)

【问题讨论】:

  • "有什么想法吗?"不是一个好问题。你的代码有问题吗?然后陈述它。如果没有,那就不要发帖了。 How to Ask
  • StackOverflow 上有几个问题是关于如何比较两个字符串并找出它们是否是字谜。你先看过那些吗?你也明白为什么你的代码没有按预期工作吗?
  • @Riko 我并不咄咄逼人,我只是告诉你什么是可以接受的。如果您愿意,我可以闭嘴,让您发布将继续被否决的不良问题... :)
  • 简单的想法:对2个字符串进行排序,然后比较-如果它们是字谜,它们将相等 def anagram(s1,s2): return ''.join(sorted(s1.lower()) ) == ''.join(排序(s2.lower()))
  • 你可以做的是检查长度然后查看并索引所有字母然后你的好。

标签: python


【解决方案1】:

考虑使用collections.counter

import collections

s1 = "Army"
s2 = "Mary"
s3 = "Zary"

def anagram(s1,s2):
  return collections.Counter(s1.lower()) == collections.Counter(s2.lower())

print anagram(s1,s2) # True
print anagram(s1, s3) # False

试试here!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多