PHP-比较字符串相似
求算法 比较 abcdef,badcfe 这两个字符串中的字母以及个数是否完全一致
当前我能想到的就是
既然 每个 都是乱的 那么我们按一个专门的规则 也就是自然排序 经过排序之后 他们肯定是按字母从大到小去排列的
但是肯定有更好的方案,求高手分享
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果仅是a-z, 用数组array[26] 做 字母 到 个数的映射.
遍历字符串得到两个结果数组, 比较两个数组是否相等.
不能使用额外空间的话就需要quicksort一下,时间复杂度O(nlogn).
可以使用额外空间的话就hashmap记录字符和出现次处,时间复杂度O(n).
bool func(const string &a, const string &b)
{
if (a.size() != b.size()) return false;
unordered_map<char, int> mapping;
for (int i = 0; i < a.size(); i++)
{
if (mapping.findkey(a[i]) == mapping.end())
mapping[a[i]] = 1;
else
mapping[a[i]]++;
if (mapping.findkey(b[i]) == mapping.end())
mapping[b[i]] = -1;
else
mapping[b[i]]--;
}
for (auto it = mapping.begin(); it != mapping.end(); it++)
{
if (it->second != 0) return false;
}
return true;
}