leetcode.884——字符串分割(substr),哈希(unordered_map)的練習

884. 兩句話中的不常見單詞

句子?是一串由空格分隔的單詞。每個?單詞?僅由小寫字母組成。

如果某個單詞在其中一個句子中恰好出現一次,在另一個句子中卻?沒有出現?,那么這個單詞就是?不常見的?

給你兩個?句子?s1?和?s2?,返回所有?不常用單詞?的列表。返回列表中單詞可以按?任意順序?組織。

示例 1:

輸入:s1 = "this apple is sweet", s2 = "this apple is sour"
輸出:["sweet","sour"]

示例 2:

輸入:s1 = "apple apple", s2 = "banana"
輸出:["banana"]

提示:

  • 1 <= s1.length, s2.length <= 200
  • s1?和?s2?由小寫英文字母和空格組成
  • s1?和?s2?都不含前導或尾隨空格
  • s1?和?s2?中的所有單詞間均由單個空格分隔

兩種解法 第一種比較普遍 第二種運用substr進行優化

/*
思路:通過題意可知,不常見單詞即為出現次數為1次的單詞,具體方法如下1. 將A和B兩個字符串拼接,存于s中2. 從s中分離出單詞,保存在vector vRet中3. 使用unordered_map統計vRet中每個單詞出現的次數4. 遍歷unordered_map,將出現一次的單詞保存在vRet中5. 返回vRet
*/
class Solution {
public:vector<string> uncommonFromSentences(string A, string B) {// 將兩個語句拼接string s = A + " " + B;// 分離單詞vector<string> vRet;for(size_t i = 0; i < s.size(); ++i){string temp;while(i < s.size() && s[i] != ' '){temp += s[i];++i;}vRet.push_back(temp);}// 統計每個單詞出現的次數unordered_map<string, int> m;for(auto e : vRet)m[e]++;vRet.clear();// 將出現一次的單詞保存在vRet中for(auto e : m){if(e.second == 1)vRet.push_back(e.first);}return vRet;}
};

第二種解法:

class Solution {
public:vector<string> uncommonFromSentences(string s1, string s2) {string s = s1+" "+s2;unordered_map<string,int> m;int i = 0;while(1)//字符串分割{i = 0;while(s[i]!=' '&&i<s.size()){i++;}m[s.substr(0,i)]++;if(i<s.size()){s=s.substr(i+1,s.size()-i);}else break;}vector<string> res;for(auto e:m){if(e.second==1){res.push_back(e.first);}}return res;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165609.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

成為AI產品經理——模型構建流程(下)

目錄 1.模型訓練 2.模型驗證 3.模型融合 4.模型部署 上節課我們講了模型設計、特征工程&#xff0c;這節課我們來講模型構建剩下的三個部分&#xff1a;模型訓練、模型驗證和模型融合。 1.模型訓練 模型訓練就是要不斷地訓練、驗證、調優直至讓模型達到最優。 那么怎么達…

Python“牽手”京東商品詳情接口運營場景,京東商品詳情接口調用指南

京東商品詳情接口是一種程序化的接口&#xff0c;通過這個接口&#xff0c;商家或開發者可以使用自己的編程技能&#xff0c;獲取京東平臺上的商品詳細信息。這個接口允許商家根據自身的需求&#xff0c;獲取商品的標題、價格、促銷價、優惠券、庫存、銷量、詳情圖片、SKU屬性、…

YOLOv5分割訓練,從數據集標注到訓練一條龍解決

最近進行了分割標注&#xff0c;感覺非常好玩&#xff0c;也遇到了很多坑&#xff0c;來跟大家分享一下&#xff0c;老樣子有問題評論區留言&#xff0c;我會的就會回答你。 第一步&#xff1a;準備數據集 1、安裝標注軟件labelme如果要在計算機視覺領域深入的同學&#xff0…

TC397 EB MCAL開發從0開始系列 之 [15.2] Fee配置 - QsBlock demo

一、Fee配置1、配置目標2、目標依賴2.1 硬件使用2.2 軟件使用2.3 新增模塊3、EB配置3.1 配置講解3.2 模塊配置3.2.1 MCU配置3.2.2 PORT配置3.2.3 Fls_17_Dmu配置3.2.4 Fee配置3.2.5 Irq配置3.2.6 ResourceM配置4、ADS代碼編寫及調試4.1 工程編譯4.2 測試結果4.3 測例源碼->

基于STC12C5A60S2系列1T 8051單片讀寫掉電保存數據IIC總線器件24C02一字節并顯示在液晶顯示器LCD1602上應用

基于STC12C5A60S2系列1T 8051單片讀寫掉電保存數據IIC總線器件24C02一字節并顯示在液晶顯示器LCD1602上應用 STC12C5A60S2系列1T 8051單片機管腳圖STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹IIC通信簡單…

致遠M3 反序列化RCE漏洞復現(XVE-2023-24878)

0x01 產品簡介 M3移動辦公是致遠互聯打造的一站式智能工作平臺&#xff0c;提供全方位的企業移動業務管理&#xff0c;致力于構建以人為中心的智能化移動應用場景&#xff0c;促進人員工作積極性和創造力&#xff0c;提升企業效率和效能&#xff0c;是為企業量身定制的移動智慧…

15.Python 異常處理和程序調試

1. 異常處理 異常就是在程序執行過程中發生的超出預期的事件。一般情況下&#xff0c;當程序無法正常執行時&#xff0c;都會拋出異常。 在開發過程中&#xff0c;由于疏忽或考慮不周&#xff0c;出現的設計錯誤。因此&#xff0c;在后期程序調試中應該根據錯誤信息&#xff…

系統高可用設計-有感

文章目錄 系統設計原則是 冗余 取舍系統運維的原則是規避線上異常 高可用設計通常從 系統設計和 系統運維 2 個層面來著手突破。 系統設計原則是 冗余 取舍 冗余&#xff1a;指集群部署 故障轉移取舍&#xff1a;常見手段包括&#xff1a;超時控制、降級、限流 系統運維…

音視頻項目—基于FFmpeg和SDL的音視頻播放器解析(二十)

介紹 在本系列&#xff0c;我打算花大篇幅講解我的 gitee 項目音視頻播放器&#xff0c;在這個項目&#xff0c;您可以學到音視頻解封裝&#xff0c;解碼&#xff0c;SDL渲染相關的知識。您對源代碼感興趣的話&#xff0c;請查看基于FFmpeg和SDL的音視頻播放器 如果您不理解本…

springboot(ssm災害應急救援平臺 應急管理平臺Java(codeLW)

springboot(ssm災害應急救援平臺 應急管理平臺Java(code&LW) 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或8.0&#x…

AOP(面向切面編程)

AOP是針對面向對象編程的一種補充&#xff0c;有時使用面向對象不能很好完成一些額外的功能業務時&#xff0c;可以采用AOP來進行補充。切面編程的目的就是為了將業務目標進行而外的增強或者擴展。Spring中的AOP是基于JDK動態代理和CGLIB動態代理實現的。 應用場景 日志操作&…

【數據結構(四)】前綴、中綴、后綴表達式(逆波蘭表達式)和逆波蘭計算器的代碼實現(2)

文章目錄 1. 前綴表達式(波蘭表達式)1.1. 前綴表達式的計算機求值 2. 中綴表達式3. 后綴表達式(逆波蘭表達式)3.1. 后綴表達式的計算機求值3.2. 逆波蘭計算器的實現 4. 中綴表達式 轉 后綴表達式4.1. 思路分析4.2. 代碼實現 5. 逆波蘭計算器的完整版 1. 前綴表達式(波蘭表達式)…

手寫數字可視化_Python數據分析與可視化

手寫數字可視化 手寫數字流形學習 手寫數字 手寫數字無論是在數據可視化還是深度學習都是一個比較實用的案例。 數據在sklearn中&#xff0c;包含近2000份8 x 8的手寫數字縮略圖。 首先需要先下載數據&#xff0c;然后使用plt.imshow()對一些圖形進行可視化&#xff1a; 打開c…

Mysql 鎖機制分析

整體業務代碼精簡邏輯如下&#xff1a; Transaction public void service(Integer id) {delete(id);insert(id); }數據庫實例監控&#xff1a; 當時通過分析上游問題流量限流解決后&#xff0c;后續找時間又重新分析了下問題發生的根本原因&#xff0c;現將其總結如下&#xf…

XDR 網絡安全:技術和最佳實踐

擴展檢測和響應&#xff08;XDR&#xff09;是一種安全方法&#xff0c;它將多種保護工具集成到一個統一的集成解決方案中。它為組織提供了跨網絡、端點、云工作負載和用戶的廣泛可見性&#xff0c;從而實現更快的威脅檢測和響應。 XDR的目標是提高威脅檢測的速度和準確性&…

Arduino驅動防水型SHT20溫濕傳感器(溫濕度傳感器)

目錄 1、傳感器特性 2、控制器和傳感器連線圖 3、驅動程序 SHT20防水型溫濕傳感器,采用新一代Sensirion濕度和溫度傳感器,配有4代CMOSens芯片。除了配有電容式相對濕度傳感器和能隙溫度傳感器外,該芯片還包含一個放大器、A/D轉換器、OTP內存和數字處理單元,可精確測量周…

Linux系統介紹及文件類型和權限

終端:CtrlAltT 或者桌面/文件夾右鍵,打開終端 切換為管理員:sudo su 退出:exit 查看內核版本號:uname -a 內核版本號含義:5 代表主版本號;13代表次版本號;0代表修訂版本號;30代表修訂版本的第幾次微調;數字越大表示內核越新. 目錄結構 /bin:存放常用命令(即二進制可執行程序…

C/C++內存管理(2):`new`和`delete`的實現原理

new和delete操作自定義類型 class Stack { public:Stack(int capacity 3):_top(0), _capacity(capacity){cout << "Stack(int capacity 3)" << endl;_a new int[capacity];}~Stack(){cout << "~Stack()" << endl;delete _a;_to…

openssl+ RSA + linux 簽名開發實例(C++)

文章目錄 一、opensslRSA理論基礎二、openssl RSA 簽名開發實例 一、opensslRSA理論基礎 RSA簽名是一種非對稱加密算法&#xff0c;用于在信息傳輸過程中驗證消息的完整性和真實性。以下是RSA簽名的理論基礎的主要知識點&#xff1a; RSA密鑰對&#xff1a; RSA使用一對公鑰和…

pcie-2-rj45速度優化

背景: 目前用iperf3打流傳輸速率達不到要求,千兆實際要求跑到800M以上: 優化方案: 1.優化defconfig: 首先編譯user版本驗證看是否正常 debug版本關閉CONFIG_SLUB_DEBUG_ON宏控。 2.找FAE ,通過更換驅動,或者更新驅動來優化 3.綁定大核: 以8125網卡為例,udp…