博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ code:剩余串排列
阅读量:4361 次
发布时间:2019-06-07

本文共 1024 字,大约阅读时间需要 3 分钟。

方法一:

一种直观的解是,先对第一个字串排序,然后逐个字符在第二个字串中搜索,把搜索不到的字符输出,就是所要的结果。

然而,算法库中有一个集合差运算set_difference,而且要求两个集合容器是已经排好序的。乍一看,好像是针对集合差运算来的。

1 #include
2 #include
3 #include
4 using namespace std; 5 6 int main() 7 { 8 ifstream in("remainder.txt"); 9 for (string s,t,u; in >> s >> t;u="")10 {11 sort(s.begin(), s.end());12 sort(t.begin(), t.end());13 set_difference(s.begin(),s.end(),t.begin(),t.end(),back_inserter(u));14 cout << u << endl;15 }16 }

方法二:

然而注意到,对两个集合分别排序的代价是大的。事实上,t串无需排序,下面的解法,更高效:

1 #include
2 #include
3 #include
4 using namespace std; 5 6 int main() 7 { 8 ifstream in("remainder.txt"); 9 for (string s,t; in >> s >> t;)10 {11 sort(s.begin(), s.end());12 for (int i = 0; i < s.length();++i)13 if (t.find(s[i]) == string::npos) cout << s[i];14 cout <

 

转载于:https://www.cnblogs.com/ariel-dreamland/p/9092065.html

你可能感兴趣的文章
只能为浮点数的正则表达式
查看>>
Android之指南针学习 分类: Android开发 ...
查看>>
android学习和广告平台赚钱zz 分类: Android其他 ...
查看>>
第7章例7-13
查看>>
推荐几本产品类的书
查看>>
VC++一些开发心得与调试技巧
查看>>
python 归纳 (二八)_python测试使用快速上手
查看>>
oracle 11g虚拟机安装环境配置脚本
查看>>
高并发的初识和想法
查看>>
[HihoCoder-1424] Asa's Chess Problem
查看>>
事件委托
查看>>
利用for循环找出1000以内的质数
查看>>
使用jQuery快速高效制作网页交互特效(5)
查看>>
C++学习(十一)(C语言部分)之 练习
查看>>
JMS【三】--ActiveMQ简单的HelloWorld实例
查看>>
visual c++基础(windows窗口程序解析)
查看>>
【趣味】0基础快速掌握区块链服务关键概念
查看>>
【LG 4831】Scarlet loves WenHuaKe(生成函数)
查看>>
git hook 自动部署
查看>>
Redis总结(四)Redis 的持久化(转载)
查看>>