当前位置: 首页 > news >正文

相似度计算 第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代码:

#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;
}

相关文章:

  • 分秒计数器设计
  • XPath、XQuery 以及 XSLT 函数
  • 【工具变量】上市公司供应链稳定性数据两个维度(2013-2023年)
  • Netty源码—10.Netty工具之时间轮二
  • 【已开源】UniApp+vue3跨端应用从0到1开发指南、uniapp+vue3模板应用
  • 生成和管理作品集链接
  • Trae-中国首款免费AI原生IDE
  • Router [Continuation Settings]
  • 打包python文件生成exe
  • 【C++】 string底层封装的模拟实现
  • 【蓝桥杯】每日练习 Day 16,17
  • GO语言杂记(文章持续更新)
  • PostgreSQL15深度解析(从15.0-15.12)
  • 打造高性能中文RAG系统:多轮对话与语义检索的完美结合
  • vulhub靶场—— Tomcat8
  • vue3搭建实战项目笔记三
  • 如何设置PDF文件的到期日期
  • this关键字
  • 特征增强金字塔FPN
  • 为什么 ThreadLocalMap 的 key 是弱引用 value是强引用
  • 手机网站开发报价单/百度收录查询
  • 长春建设局网站/链接
  • 成都手机wap网站制作/站长素材音效网
  • 哪个网站可以做创意短视频/直销产业发展论坛
  • 建立网站的目的是什么/查询网
  • 公司网站英文/国外网站推广