目录
牛客_单词倒排(字符串模拟)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M
题目描述:
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
数据范围:字符串长度满足 1≤n≤10000
输入描述:
输入一行,表示用来倒排的句子
输出描述:
输出句子的倒排结果
示例1
输入
I am a student
输出
student a am I
示例2
输入
$bo*y gi!r#l
输出
l r gi y bo
解析代码
思路:
- 先切分(切分前先对分割符做处理, 统一分割符) , 此时可以使用 stringstream 进行切分。
- 再合并(对切分结果逆序合并) 直接字符串拼接合并即可。
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main()
{
string strA;
string strB;
unordered_map<char, int> mapA;
unordered_map<char, int> mapB;
while(cin >> strA >> strB)
{
mapA.clear();
mapB.clear();
//统计次数
for(auto& ch :strA)
mapA[ch]++;
for(auto& ch : strB)
mapB[ch]++;
bool ret = true;
//遍历字符串B
for(auto& ch : strB)
{
if(mapA[ch] < mapB[ch])
{
ret = false;
break;
}
}
if(ret)
cout << "Yes" <<endl;
else
cout << "No"<<endl;
}
return 0;
}
标签:mapB,ch,OJ,倒排,单词,牛客,字符串
From: https://blog.csdn.net/GRrtx/article/details/142065470