Using Hash Set to Determine if a String is the Permutation of An
- 时间:2020-09-09 13:08:38
- 分类:网络文摘
- 阅读:126 次
Given two strings s1 and s2, write an algorithm to determine if s1 is one permutation of s2.
For example:
s1 = “abc”, s2 = “bca”
output: true
s1 = “abc”, s2 = “bad”
output: false
Algorithm to Determine if a String is the Permutation of Another String
The fastest way to determine this is to use hash sets. If both strings (s1 and s2) are of different sizes, the result has to be false. Otherwise, we can convert both into two hash sets and simply compare the equality of both hash sets.
In C++, you can directly compare the the equality of both hash sets, either set (based on Red-Black Tree) or unordered_set (based on Hash Map):
1 2 3 4 5 6 7 8 9 | class Solution { public: bool CheckPermutation(string s1, string s2) { if (s1.size() != s2.size()) return false; unordered_set<char> a(begin(s1), end(s1)); unordered_set<char> b(begin(s2), end(s2)); return a == b; } }; |
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if (s1.size() != s2.size()) return false;
unordered_set<char> a(begin(s1), end(s1));
unordered_set<char> b(begin(s2), end(s2));
return a == b;
}
};Using unordered_set in C++, you will have a O(N) complexity however if you are using set (which keeps the keys in order by tree), the complexity is O(N.Log(N)).
In Python, we can do the same, with less code:
1 2 3 4 5 | class Solution: def CheckPermutation(self, s1: str, s2: str) -> bool: if len(s1) != len(s2): return False return set(s1) == set(s2) |
class Solution:
def CheckPermutation(self, s1: str, s2: str) -> bool:
if len(s1) != len(s2):
return False
return set(s1) == set(s2)–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:404是什么意思?404错误页面是怎么造成的 Google SEO怎么用外链优化来增加网站权重 企业商家怎么做百度地图标注、优化排名、推广引流和营销? 网站优化排名,关键词上涨乏力,5个技巧突破瓶颈 网站优化都需要留意哪些重点 wordpress多说最新评论小工具美化技巧 wordpress如何调用具有相同自定义栏目名称及值的文章 为wordpress后台添加微软雅黑字体 wordpress主题制作时调用分类链接的方法 两种方法批量删除wordpress自定义栏目
- 评论列表
-
- 添加评论