日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1181. 前后拼接(哈希map)

發布時間:2024/7/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1181. 前后拼接(哈希map) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一個「短語」列表 phrases,請你幫忙按規則生成拼接后的「新短語」列表。

「短語」(phrase)是僅由小寫英文字母和空格組成的字符串。「短語」的開頭和結尾都不會出現空格,「短語」中的空格不會連續出現。

「前后拼接」(Before and After puzzles)是合并兩個「短語」形成「新短語」的方法。

我們規定拼接時,第一個短語的最后一個單詞 和 第二個短語的第一個單詞 必須相同

返回每兩個「短語」 phrases[i] 和 phrases[j](i != j)進行「前后拼接」得到的「新短語」。

注意,兩個「短語」拼接時的順序也很重要,我們需要同時考慮這兩個「短語」。另外,同一個「短語」可以多次參與拼接,但「新短語」不能再參與拼接。

請你按字典序排列并返回「新短語」列表,列表中的字符串應該是 不重復的

示例 1: 輸入:phrases = ["writing code","code rocks"] 輸出:["writing code rocks"]示例 2: 輸入:phrases = ["mission statement","a quick bite to eat","a chip off the old block","chocolate bar","mission impossible","a man on a mission","block party","eat my words","bar of soap"] 輸出:["a chip off the old block party","a man on a mission impossible","a man on a mission statement","a quick bite to eat my words","chocolate bar of soap"]示例 3: 輸入:phrases = ["a","b","a"] 輸出:["a"]提示: 1 <= phrases.length <= 100 1 <= phrases[i].length <= 100

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/before-and-after-puzzle
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

class Solution { public:vector<string> beforeAndAfterPuzzles(vector<string>& phrases) {unordered_map<string,vector<int>> front;//字符前綴,包含該字符的字符串的idxunordered_map<string,vector<int>> back;//字符后綴,包含該字符的字符串的idxsize_t idx1, idx2, len, i, j;for(i=0; i<phrases.size(); ++i){idx1 = phrases[i].find_first_of(' ');//第一個空格idx2 = phrases[i].find_last_of(' ');//最后一個空格if(idx1 != string::npos)//找到了front[phrases[i].substr(0,idx1)].push_back(i);else//沒找到front[phrases[i]].push_back(i);if(idx2 != string::npos)back[phrases[i].substr(idx2+1)].push_back(i);elseback[phrases[i]].push_back(i);}set<string> ans;for(auto it1 = back.begin(); it1 != back.end(); ++it1){if(!front.count(it1->first))//前綴不包含該單詞continue;len = it1->first.size();//包含,該代詞的長度for(i = 0; i < it1->second.size(); i++){idx1 = it1->second[i];//包含該后綴的單詞idxfor(j = 0; j < front[it1->first].size(); j++){idx2 = front[it1->first][j];//包含該前綴的單詞idxif(idx1 == idx2)continue;//同一個單詞ans.insert(phrases[idx1]+phrases[idx2].substr(len));}}}return vector<string>(ans.begin(), ans.end());} };

12 ms 10.3 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1181. 前后拼接(哈希map)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。