相似度计算 第33次CCF-CSP计算机软件能力认证

https://www.acwing.com/problem/content/5723/

注意点:

1.集合去重单词

2.getline()最后回车需要忽视

3.一些bulit in函数 如下:

字符转小写

#include <cctype>

tolower(ch)

字符串转小写

#include <algorithm>

transform(str.begin(), str.end(), str.begin(), ::tolower)

字符串提取单词

#include <sstream>

string sentence = "This is a test string.";

istringstream iss(sentence); // 构造输入流

string word;

vector<string> words;

while (iss >> word) {

words.push_back(word); // 提取每个单词

}

寻找自定义分隔符

size_t start = 0, end;

while ((end = sentence.find(' ', start)) != std::string::npos) {

words.push_back(sentence.substr(start, end - start));

start = end + 1;

}

words.push_back(sentence.substr(start)); // 最后一个单词

#集合取交集并集

#include <algorithm>

set<int> result;

set_union(set1.begin(), set1.end(),

set2.begin(), set2.end(),

inserter(result, result.begin()));

set_intersection(set1.begin(), set1.end(),

set2.begin(), set2.end(),

inserter(result, result.begin()));

set_difference()(差集)

vector寻找元素

find(words2.begin(),words2.end(),word)!=words2.end()


Accept代码:

cpp 复制代码
#include<iostream>
#include<string>
#include<set>
#include<sstream>
#include <algorithm>
#include<vector>
using namespace std;
int n, m;
string transfer(string s) {
    string result;
    for (char c : s) {
        if (c >= 'A' && c <= 'Z') {
            result += (char)(c - 'A' + 'a');  // 转成小写
        }
        else {
            result += c;  // 小写字母或其他字符原样加
        }
    }
    return result;
}

int main() {
    //初始化
    string s1, s2;
    vector<string> words1, words2;
    string word;
    set<string> u,u1,u2;//并集

    //输入流
    cin >> n >> m;
    cin.ignore();
    getline(cin, s1);
    getline(cin, s2);
    istringstream iss1(s1);
    istringstream iss2(s2);
    while (iss1 >> word) {
        word = transfer(word);
        words1.push_back(word);
    }
    while (iss2 >> word) {
        word = transfer(word);
        words2.push_back(word);
    }

    //解决问题
    for (string word : words1) {
        u1.insert(word);
        u.insert(word);
    }
    for (string word : words2) {
        u2.insert(word);
        u.insert(word);
    }
    int ii = 0, uu = u.size();
    for (string word : u1) {
        if (u2.find(word) != u2.end()) {
            ii++;
        }
    }
    cout << ii << endl;
    cout << uu;
    return 0;
}
相关推荐
一方热衷.2 小时前
YOLO26-Seg ONNXruntime C++/python推理
开发语言·c++·python
靓仔建3 小时前
Vue3导入组件出错does not provide an export named ‘user_setting‘ (at index.vue:180:10)
开发语言·前端·typescript
仰泳的熊猫4 小时前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
2301_803554524 小时前
linux 以及 c++编程里对于进程,线程的操作
linux·运维·c++
赶路人儿4 小时前
UTC时间和时间戳介绍
java·开发语言
6+h4 小时前
【java】基本数据类型与包装类:拆箱装箱机制
java·开发语言·python
小糯米6016 小时前
C++ 排序
c++·算法·排序算法
未来之窗软件服务6 小时前
幽冥大陆(一百12)js打造json硬件管道——东方仙盟筑基期
开发语言·javascript·算法·json·仙盟创梦ide·东方仙盟·东方仙盟算法
人道领域6 小时前
苍穹外卖:菜品分页查询与删除功能(保姆级详解)
java·开发语言·数据库·后端·spring