如果字符串包含相同的字符,则使用两个字符串并返回
True
,无论出现次数或出现顺序如何。必须考虑所有字符且区分大小写(例如,sameChars("AA","a")
返回False
,而sameChars("FgFFF","ggFF")
返回True
。
我的代码是:
def sameChars(s1, s2):
if s1 <= s1:
return True
else:
return False
如果我把:
,函数会返回true
print sameChars('AA', 'a')
但它应该返回false
。
答案 0 :(得分:5)
您正在查看 - s1 <= s1
。这将永远为真,因为您正在使用s1
检查s1
。
即使您使用s1
检查了s2
,我也认为这不符合您的要求,因为s1 <= s2
正在检查s1
是否按字典顺序低于{{1} }}
最好的方法是将s1和s2的字符放入一个集合中,然后检查它是否相等。
示例 -
s2
或者只返回def sameChars(s1, s2):
if set(s1) == set(s2):
return True
else:
return False
set(s1) == set(s2)
set - 无序的独特元素集合
In Sets元素将是唯一的,因为它们不允许重复,并且它们是无序的,因此如果它们具有相同的元素,则两个集合将是相等的,而不管元素出现的顺序如何。
答案 1 :(得分:0)
起初:
def sameChars(s1, s2):
return set(s1) == set(s2)
总是如此。你弄错了。
一般来说,你的功能不太有用。像s1 <= s1
那样使用它的任何地方都可以简单地用sameChars(s1, s2)
做同样的效果。
答案 2 :(得分:0)
您在OP中说过要检查字符串是否包含相同的字符。这是一种方法:
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QQuickWindow *wnd1 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd1");
if(wnd1)
wnd1->setTitle("Server");
QQuickWindow *wnd2 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd2");
if(wnd2)
wnd2->setTitle("Client");