Bailian3729 用set实现字符串的排序和查找文本处理
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian3729 用set实现字符串的排序和查找文本处理相关的知识,希望对你有一定的参考价值。
总时间限制: 1000ms 内存限制: 65536kB
描述
输入若干只包含数字的字符串,要求按它们被看作整数时的大小排序,并以从大到小的顺序输出。重复的字符串只能留下一个。
接下来,查找某些给定的字符串是否是前面输入的某个串。
如果两个字符串被看作整数时值相同,则短的排前面。
字符串最多有400个字符,但它被看作一个整数时,其值是不超过 int 的表示范围的(即可能有大量多余的前导0)
不考虑空串
输入
第一部分是若干待排序的字符串(不超过 30000行), 以一行"END"结束。
接下来是若干行要查找的字符串 ,同样以 “END” 结束
输出
先将第一部分的待排序字符串按前述规则排序输出,一个字符串一行
然后输出一行"END",表示以下是查找结果
对于每个待查找的字符串,输出一行查找结果。如果该字符串是第一部分中的一个,则查找结果为该字符串后跟着" found";
如果该字符串是第一部分中的一个,则查找结果为该字符串后跟着" not found";
样例输入
0000
000
01
02
1
21
00001234
01234
5678
1234
1234
21
END
5876
1234
123
2
02
0
END
样例输出
5678
1234
01234
00001234
21
02
1
01
000
0000
END
5876 not Found
1234 found
123 not Found
2 not Found
02 found
0 not Found
提示
编写函数对象类的 operator() 成员函数时,最好将其写为 const 函数,否则容易出错
来源
Guo Wei
问题链接:Bailian3729 用set实现字符串的排序和查找
问题简述:(略)
问题分析:(略)
程序说明:(略)
参考链接:(略)
题记:(略)
AC的C++语言程序如下:
/* Bailian3729 用set实现字符串的排序和查找 */
#include <iostream>
#include <algorithm>
#include <map>
#include <cstdlib>
using namespace std;
const int N = 30000 + 1;
struct Node
string s;
int num, len;
r[N];
map<string, int> mp;
bool cmp(Node x, Node y)
return x.num == y.num ? x.len < y.len : x.num > y.num;
int main()
int cnt = 0;
while (cin >> r[cnt].s && r[cnt].s != "END")
mp[r[cnt].s]++;
r[cnt].num = atoi(r[cnt].s.c_str());
r[cnt].len = r[cnt].s.length();
cnt++;
sort(r, r + cnt, cmp);
cout << r[0].s << endl;
for (int i = 1; i < cnt; i++)
if (r[i].s != r[i - 1].s)
cout << r[i].s << endl;
cout << "END" << endl;
string s;
while (cin >> s && s != "END")
cout << s << ' ' << (mp[s] ? "found" : "not Found") << endl;
return 0;
以上是关于Bailian3729 用set实现字符串的排序和查找文本处理的主要内容,如果未能解决你的问题,请参考以下文章
Bailian3719 学生信息用qsort排序排序+字符串库函数
Bailian3719 学生信息用qsort排序排序+字符串库函数