884. 两句话中的不常见单词 map与stringstream

news2024/10/6 22:30:10

 

目录

 力扣884. 两句话中的不常见单词

 【解法一】:最后写出了一坨屎,虽然它是一坨屎,但是它能动,虽然它是一坨屎,但起码这是我自己拉的

【大佬解法】 stringstream的使用 以及 map的使用


884. 两句话中的不常见单词

句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。

如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。

给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。

 【解法一】:最后写出了一坨屎,虽然它是一坨屎,但是它能动,虽然它是一坨屎,但起码这是我自己拉的

class Solution {
public:
    vector<string> division(string s)
    {
        vector<string> res;
        int pos = s.find(' ');
        int begin = 0;
        while(pos!=-1)
        {
            string temp(s.begin()+begin, s.begin()+pos);
            res.push_back(temp);
            begin = pos+1;
            pos = s.find(' ', begin);
        }
        res.push_back(string(s.begin()+begin, s.end()));
        return res;
    }
    vector<string> delete_repeat(vector<string> v)
    {
        sort(v.begin(), v.end());
        for(size_t i = 0; i < v.size();)
        {
            auto temp = v[i];
            if(v[i+1] == temp)
            {
                while(i<v.size() && v[i]==temp)
                {
                    auto it = v.begin()+i;
                    v.erase(it);
                }
            }
            else
                ++i;
        }
        return v;
    }
    vector<string> uncommonFromSentences(string s1, string s2) {
        vector<string> v1;
        vector<string> v2;
        v1 = division(s1);
        v2 = division(s2);
        for(size_t i = 0; i < v2.size(); ++i)
        {
            v1.push_back(v2[i]);
        }
        return delete_repeat(v1);
    }
};

【大佬解法】 stringstream的使用 以及 map的使用

class Solution {
public:
    vector<string> uncommonFromSentences(string s1, string s2) {
        map<string, int> mp;
        vector<string> ans;
        stringstream ss1, ss2;  
        string s;
        ss1 << s1; ss2 << s2;   
        while(ss1 >> s) //抽出一个单词并停止
        {
            mp[s]++;//次数
        }  
        while(ss2 >> s) 
        {
            mp[s]++;
        }
        for(auto m : mp) 
        {
            if(m.second == 1)ans.push_back(m.first); //统计次数为一的单词
        }
        return ans;
    }
};   

 map可以定义俩个类型的容器,例如map<string, int> mp; 第一个为key值,一个容器内只能出现一次,而第二个为value值,是实现与之一对一映射的。

Map是STL 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力

这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的

stringstream

 以空格分割获取单词块;

 我写的单词分割函数:

    vector<string> division(string s)
    {
        vector<string> res;
        int pos = s.find(' ');
        int begin = 0;
        while(pos!=-1)
        {
            string temp(s.begin()+begin, s.begin()+pos);
            res.push_back(temp);
            begin = pos+1;
            pos = s.find(' ', begin);
        }
        res.push_back(string(s.begin()+begin, s.end()));
        return res;
    }

下面是对map的初步掌握已经对stringstream 的练习使用

#include<iostream>
using namespace std;
#include<map>
#include<sstream>
void TestMap01()
{
	// 插入元素
	map<string, string> firend;
	firend.insert (pair<string,string>("Bob", "12312121"));
	firend.insert(pair<string, string>("yes", "12345"));
	firend.insert(pair<string, string>("yes1", "12345"));
	firend.insert(pair<string, string> ("yes2", "12345"));
	firend.insert(pair<string, string>("yes3", "12345"));
	firend.insert(pair<string, string>("yes4", "12345"));
	auto it = firend.begin();
	while (it != firend.end())
	{
		cout <<it->first<< " " << it->second << endl;
		it++;
	}
}

void TestMap02()
{
	map<int, int> mp;
	cout << mp[0] << endl;
	mp[0]++;
	cout << mp[0] << endl;
	mp[3] = 100;
	cout << mp[3] << endl;
	cout << mp[3] + 2 << endl;
	cout << mp[3] << endl;
}

void TestMap03()
{
	stringstream ss;
	string res;
	int value = 1000;
	ss << value;
	ss >> res;
	cout << res << endl;
}

void TestStringstream()
{
	stringstream ss;
	string res;
	ss << "weixuanlv " << "1 2" << "shuaishuai";
	ss >> res;
	cout << res;
	cout << ss.str() << endl;
}

void TestStringstream2()
{
	stringstream ss;
	string res;
	ss << "weixuanlv is very handsome";
	while (ss >> res)
	{
		cout << res << endl;
	}

}

void TestStringstream3()
{
	stringstream ss;
	string res;
	map<string, int> mp;
	string s1 = "this apple is sweet";
	ss << s1;
	while (ss >> res)
	{
		mp[res]++;
	}
	auto it = mp.begin();
	while (it != mp.end())
	{
		cout << it->first << " " << it->second << endl;
	}
}

int main()
{
	// TestMap01();
	// TestMap02();
	// TestMap03();
	// TestStringstream();
	// TestStringstream2();
	TestStringstream2();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python实现bib文件中参考文献的题目每个单词首字母大写

文章目录前言实现思路前言 由于毕业论文格式要求英文参考文献的题目的每个单词&#xff08;除了介词&#xff09;的首字母都要大写&#xff0c;如果一条条地自己修改费时费力&#xff0c;这里就想着简单地用python操作字符串的方式实现。 实现思路 观察bib参考文献格式&#x…

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核 2023/1/2 17:40 《RK3588_Android12_SDK_Developer_Guide_CN.pdf》 原厂的开发板rk3588-evb1-lp4-v10单独编译内核的方式&#xff1a; cd kernel-5.10 export PATH../prebuilts/clang/host/linux-x86/clang-r4161…

【数据结构】C语言实现链表(单链表部分)

目录 前言 链表 链表的分类 1.单向或者双向 2.带头或者不带头 3.循环或者非循环 单链表实现 定义节点 接口函数实现 创建节点 打印链表 尾插节点 尾删节点 头插节点 头删节点 单链表查找 删除指定位置后的节点 指定位置后插入节点 删除指定位置 指定位置插入节点…

Linux-7 文本编辑vivim

Linux-7 文本编辑vi/vim vim介绍 什么是vim&#xff1f; vi和vim是Linux下的一个文本编辑工具。&#xff08;可以李姐为Windows的记事本或word文档&#xff09; 为什么要使用vim&#xff1f; 因为Linux系统一切皆为文件&#xff0c;而我们工作最多的就是修改某个服务的配置&a…

一名七年老安卓的 2022 总结

大家好&#xff0c;我是 shixin。一转眼到了 2022 的最后一天&#xff0c;今年发生了很多事&#xff0c;这篇文章来总结一下。长短期目标达成情况和去年一样&#xff0c;我的长期目标是成为具备创业能力的人&#xff0c;包括商业思维和全栈技术能力。总的来说&#xff0c;今年是…

STM32MP157驱动开发——USB设备驱动

STM32MP157驱动开发——USB设备驱动一、简介1.电气属性2.USB OTG3.STM32MP1 USB 接口简介4.Type-C 电气属性二、USB HOST 驱动开发1.USB HOST 驱动编写2.配置 PHY 控制器3.配置usbh_ehci三、USB HOST 测试1.鼠标键盘驱动使能2.U盘驱动四、USB OTG驱动开发1.USB OTG 控制器节点信…

系统设计实战一

文章目录前言一、服务幂等1.防止订单重复下单1.1 场景如下&#xff1a;当用户在提交订单的时候1.2 重复下单解决方案1.3案例一幂等性总结2 防止订单ABA问题2.1 场景如下&#xff1a;当在修改订单用户信息的时候发生服务器或者网络问题导致的重试2.2 ABA问题解决方案2.3 业务ABA…

Mac本地安装Mysql并配置

文章目录一、安装Mysql二、配置Mysql三、启动mysql四、SQL语法初步了解1.创建数据库2.建表3.查看表一、安装Mysql 笔者推荐采用安装包的方法安装Mysql&#xff0c;比较简单&#xff0c;适合新手。 首先在网上搜安装包&#xff1a; baidu按关键字搜即可&#xff1a;mysql mac安…

多兴趣向量重构用户向量

Re4: Learning to Re-contrast, Re-attend, Re-construct for Multi-interest Recommendation 论文地址&#xff1a;https://arxiv.org/pdf/2208.08011.pdf 一般的多兴趣建模过程是对用户序列进行编码&#xff0c;抽取出用户的多个兴趣向量&#xff0c;然后利用这些用户兴趣向…

【Vue中使用Echarts】echarts初体验

文章目录一、echarts简介二、初次体验echarts1.下载2.在vue中引入echarts①全局引入&#xff08;代码&#xff09;② 局部引入一、echarts简介 在大数据盛行的今天&#xff0c;数据可视化变得越来越广泛。而在前端工作中&#xff0c;数据可视化用得最多的&#xff0c;可能就是…

Usaco Training 刷怪旅 第三层 第四题 :Combination Lock

一个六年级博主写文章不容易&#xff0c;给个关注呗 &#xff08;点赞也行啊&#xff09; 本蒟蒻的bilibili账号 注&#xff1a;这种题当你看不懂的时候是可以把题目复制去洛谷看中文版的 Farmer Johns cows keep escaping from his farm and causing mischief. To try and pre…

如何通过 Python 与 ChatGPT 对话

文章目录简介安装 OpenAI API实例1预备条件: 1. 科学上网&#xff1b; 2. 注册 OpenAI 账号。 简介 ChatGPT 是 GPT-3 语言模型的变体&#xff0c;专为会话语言生成而设计。要在 Python 中使用 ChatGPT&#xff0c;您需要安装 OpenAI API 客户端并获取 API 密钥。当前提你需要…

前端工程师leetcode算法面试必备-二分搜索算法(中)

一、前言 二分搜索算法本身并不是特别复杂&#xff0c;核心点主要集中在&#xff1a; 有序数组&#xff1a;指的是一个递增或者递减的区间&#xff08;特殊情况如&#xff1a;【852. 山脉数组的峰顶索引】&#xff09;&#xff1b; 中间数&#xff1a;用来确定搜索目标落在左…

Pytorch学习笔记①——anaconda和jupyter环境的安装(小白教程)

一、安装Pytorch 1、首先找到anaconda命令端并点击进入。 2、输入如下命令创建子空间&#xff08;博主的命名是pytorch1.4.0&#xff0c;使用python3.6版本&#xff09; conda create -n pytorch1.4.0 python3.6对于下载速度慢的话&#xff0c;首先需要进行换源&#xff0c;换…

FastJson不出网rce

BCEL ClassLoader去哪了 0x01 BCEL从哪里来 首先&#xff0c;BCEL究竟是什么&#xff1f;它为什么会出现在JDK中&#xff1f; BCEL的全名应该是Apache Commons BCEL&#xff0c;属于Apache Commons项目下的一个子项目。Apache Commons大家应该不陌生&#xff0c;反序列化最著…

05 RS485

什么是RS485&#xff1f; RS485 是一种通用的通信标准&#xff0c;广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上&#xff0c;这使得多个节点可以相互连接。 RS-485&#xff08;目前称为EIA/TIA-485&#xff09;是通信物理层的…

面试官:React怎么做性能优化

前言 最近一直在学习关于React方面的知识&#xff0c;并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式&#xff0c;将我在学习和开发&#xff08;React&#xff09;过程中遇到的问题记录下来。 这两天遇到了关于组件不必要的重复渲染问题&#xff0c;…

2022 年,我身上发生的几件大事

一晃2022互联网寒冬年就要结束了&#xff0c;在今年我的身上发生了好几件人生大事。因为这些事情对我的心态、思绪等产生了不同层次、不同方面的影响&#xff0c;所以很有必要做一次年终复盘。那么&#xff0c;接下来让我用拙略的写作手法&#xff0c;带大家走进我那特别的2022…

别等iPhone14了,苹果iPhone15变化很大

在去年的手机市场当中&#xff0c;苹果可以说是最大的赢家。因为去年iPhone13发布的时间段&#xff0c;恰好是高端旗舰的空档期&#xff0c;小米、OV在高端市场的销量表现一般&#xff0c;华为又没有能力发布新机&#xff0c;三星的Note系列在去年也暂停发布。所以不夸张的说&a…

SpringBoot整合ShardingJdbc实现数据库水平分表实战

(1)添加Maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…