AcWing 5720. 相似度计算
原题链接
简单
作者:
尘轩
,
2024-11-05 14:35:40
,
所有人可见
,
阅读 11
记录一下istringstream的用法和ignore的细节处理
#include<iostream>
#include<set>
#include<string>
#include<sstream>
#include <cctype> // std::tolower
#include<vector>
using namespace std;
int n, m;
set<string> a, b;
set<string> uni, sec;
int main() {
cin >> n >> m;
cin.ignore(); // 忽略前一个换行,避免第一行字符串的无法读入
for (int i = 0; i < 2; i ++) {
string line;
getline(cin, line);
for (auto& c : line) {
if (c != ' ') c = tolower(c);
}
istringstream stream(line); // 使用字符串流
string word;
while (stream >> word) {
if (i == 0) a.insert(word);
else b.insert(word);
uni.insert(word);
}
}
for (auto str: a) {
if (b.find(str) != b.end()) sec.insert(str);
}
printf("%d\n%d\n", sec.size() , uni.size());
return 0;
}
按指定字符分割字符串
std::string str = "apple,banana,orange,grape";
char delimiter = ','; // 指定分隔符
std::istringstream stream(str); // 使用字符串流
std::string item;
std::vector<std::string> result;
// 按照指定的分隔符分割字符串
while (std::getline(stream, item, delimiter)) {
result.push_back(item);
}