gpt4 book ai didi

c++ - 查找两个字符串共有的最大字符数

转载 作者:太空狗 更新时间:2023-10-29 21:43:49 25 4
gpt4 key购买 nike

找出两个字符串共有的最大字符数。字符区分大小写,即小写和大写字符被认为是不同的。

这是我的代码:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
std::string a, b;
int number_cases = 0, count = 0;
cin >> number_cases;
while (number_cases != 0) {
cin >> a;
cin >> b;
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < b.size(); j++) {
if (a[i] == b[j]) {
count++;
b[j] = '#';
break;
}
}
}
cout << count << endl;
count = 0;
--number_cases;
}
}

但运行时间超过 1 秒,我需要将其控制在 1 秒以下或恰好 1 秒。有什么优化技巧吗?

最佳答案

只需对它们进行排序并使用 set_intersection

#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>

int main()
{
std::string s1 = "Hello";
std::string s2 = "World";

std::sort(begin(s1), end(s1));
std::sort(begin(s2), end(s2));

std::string s3;
std::set_intersection(begin(s1), end(s1), begin(s2), end(s2), std::back_inserter(s3));
std::cout << s3.size() << ":" << s3;
}

Live Example .

注意:如果您对独特的重叠字符感兴趣,可以在s3 上运行std::unique

关于c++ - 查找两个字符串共有的最大字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com