Bailian3729 用set实现字符串的排序和查找文本处理

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian3729 用set实现字符串的排序和查找文本处理相关的知识,希望对你有一定的参考价值。

3729:用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排序排序+字符串库函数

Fib数模n的循环节 ZOJ Problem Set - 3729 Arnold

Bailian2998 日志排序排序

poj3729后缀数组

Bailian2998 日志排序排序