substr()、compare()、string中的find()函数、
来源:互联网 发布:广州易娱网络怎么样 编辑:程序博客网 时间:2024/05/22 01:26
题目名称 : [STL] Delivery (eden)
时间限制 : 1000 ms
空间限制 : 32 MB
Description
快递公司在运送货物的时候,会通过机器扫描得到货物信息。
但由于网络问题或重复扫描等问题,会产生冗余信息。
现在需要根据接收到的信息,进行整理并按时间排序,去除掉多余信息。
信息方式:
YYYY/MM/DD-HH:mm:ss|快递信息
保留某“快递信息”最早记录。
按时间顺序进行排序。
月:1-12
日:1-30
时:0-23
分、秒:0-59
输出格式
YYYY/MM/DD-HH:mm:ss : 快递信息
Hint
- map中key为唯一的。
- 可能用到的函数:
std::map::find
和string相关函数:findfirstof、substr、compare等
Sample Input
42016/01/04-12:12:12|out2016/01/04-12:23:43|get2016/01/04-12:12:12|get2016/01/04-12:10:42|out
Sample Output
2016/01/04-12:10:42 : out2016/01/04-12:12:12 : get
代码:Delivery.hpp:
#include <vector>#include <cstdlib>#include <string>#include <cctype>#include <map>#include <cstring>using namespace std;vector<string> getInfoSort(vector<string> &info){vector<string> result;map<string,string> storage;for(int i = 0; i < info.size(); i++){string str1 = info[i].substr(0,19);string str2 = info[i].substr(20,info[i].size()-1);string str3 = " : ";str3 += str2;map<string,string>::iterator iter;/*bool flag = true;map<string,string>::iterator iter;for(iter = storage.begin(); iter != storage.end(); iter++){if(iter->second == str3){if(str1.compare(iter->first) <= 0) iter->first = str1;//map中key的值是不能改变的} }*/iter = storage.find(str3);if(iter == storage.end()){storage.insert(pair<string,string>(str3,str1));}else{if(str1.compare(iter->second) <= 0) iter->second = str1;}}map<string,string> storage1;map<string,string>::iterator iter;for(iter = storage.begin(); iter != storage.end(); iter++){storage1.insert(pair<string,string>(iter->second,iter->first));}for(iter = storage1.begin(); iter != storage1.end(); iter++){string temp = "";temp = iter->first;temp += iter->second;result.push_back(temp);}return result;}main.cpp:
#include <iostream>#include <vector>#include <string>#include "Delivery.hpp" using std::string; int main() { std::vector<string> info; int n = 0; std::cin >> n; for (int i = 0; i < n; i++) { std::string temp; std::cin >> temp; info.push_back(temp); } std::vector<string> afterSort = getInfoSort(info); for (std::vector<string>::iterator it = afterSort.begin(); it != afterSort.end(); ++it) { std::cout << *it << std::endl; } system("pause"); return 0;}知识点一:
str.substr(startpos, length);其中 startpos 是起始字符的序号,length 是[从 startpos 开始]取的字符串长度(包括startpos )。#include<string>#include<iostream>using namespace std;main(){string s("12345asdf");string a=s.substr(0,4); //获得字符串s中 从第0位开始的长度为4的字符串cout<<a<<endl;}输出结果为:1234
知识点二: str1.compare(str2) 当str1大于str2时,返回值为1; 当str1小于str2时,返回值为-1; 当str1等于str2时,返回值为0。 //str1的子串(从索引3开始,包含4个字符)与str2进行比较 if(str1.compare(3,4,str2)==0) //str1指定子串与str2的指定子串进行比较 if(str1.compare(3,4,str2,3,4)==0) //str1指定子串与字符串的前n个字符进行比较 知识点二: if(str1.compare(0,2,"hi,hello",2)==0)
知识点三:
str.find(str2) 从str中找str2,找到则返回第一个字符的索引; 没找到则返回 string::npos std::string str ("There are two needles in this haystack with needles."); std::string str2 ("needle"); // different member versions of find in the same order as above: std::size_t found = str.find(str2); if (found!=std::string::npos) std::cout << "first 'needle' found at: " << found << '\n'; ==>first 'needle' found at: 14 st1.find('a', 2) 在st1中,从位置2(b,包括位置2)开始,查找字符a st2.find("abcdefg", 2, 3) 取abcdefg得前3个字符(abc)参与匹配,相当于st2.find("abc", 2) rfind()是从指定位置起向前查找,直到串首 在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回npos。 str1.find_first_of(str2, 0) << endl;//从str1的第0个字符b开始找,b不与str2中的任意字符匹配;再找c,c不与str2中的任意字符匹配;再找g, //g与str2中的g匹配,于是停止查找,返回g在str1中的位置2 */知识点四:
map中插入元素是按照key自动升序排列的。
阅读全文
0 0
- substr()、compare()、string中的find()函数、
- C++中的substr()和find()
- mysql中的substr()函数
- string.find() string.substr();
- C++中的Compare()函数用法
- substr(php函数)
- string 函数:substr() 用法
- string substr函数
- string::substr()函数调用
- string类中的find函数
- 函数string.substr、string.begin
- C++之extern和string的find函数和substr函数和data()函数使用总结
- 蓝桥杯---画表格(find、gets、substr)
- 字符串替换(string.find() 和 string.substr() 的使用)----去哪儿2016研发工程师编程题
- JSTL中的常用EL函数(fn:contains(str,subStr))
- oracle中的substr函数
- Oracle中的substr函数
- c++ STL::String::Compare (_Buf内容一致,compare不相等)
- 文章标题
- Vue.js父与子组件之间传参 父向子组件传参 例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为ht
- Binder服务线程分析
- C语言基础之链表
- Thinking
- substr()、compare()、string中的find()函数、
- 8.Nginx 例子
- js操作表格目的隔行换色
- Less 入门-函数列表(转载)
- Python内置方法1
- KSGT
- 在 Ubuntu 16.04 中安装谷歌 Chrome 浏览器
- 多选栏 LMSlider
- 搜狗输入法for LINUX