我需要能够辨别任意长度的字符串是否大于 1(且仅小写)在基本字符串或模板字符串中是否具有相同的字符集。
例如,字符串“aabc”:“azbc”和“aaabc”为假,而“acba”为真。
有没有一种快速的方法可以在 python 中执行此操作,而无需跟踪第一个字符串的所有排列,然后将其与测试字符串进行比较?
原文由 Monte Carlo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要能够辨别任意长度的字符串是否大于 1(且仅小写)在基本字符串或模板字符串中是否具有相同的字符集。
例如,字符串“aabc”:“azbc”和“aaabc”为假,而“acba”为真。
有没有一种快速的方法可以在 python 中执行此操作,而无需跟踪第一个字符串的所有排列,然后将其与测试字符串进行比较?
原文由 Monte Carlo 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是 O(n)
解决方案
from collections import Counter
Counter(str1) == Counter(str2)
但是 O(n * log n)
使用 sorted
--- 的解决方案对于 n
的合理值可能更快
原文由 John La Rooy 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
对两个字符串进行排序,然后比较它们:
如果字符串的长度可能不同,您可能需要先确定这一点以节省时间: