前端算法題解leetcode49-字母異位詞分組
題目
給你一個(gè)字符串?dāng)?shù)組,請(qǐng)你將 字母異位詞 組合在一起??梢园慈我忭樞蚍祷亟Y(jié)果列表。
字母異位詞 是由重新排列源單詞的字母得到的一個(gè)新單詞,所有源單詞中的字母通常恰好只用一次。
示例 1:
輸入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出: [["bat"],["nat","tan"],["ate","eat","tea"]
示例 2:
輸入: strs = [""]
輸出: [[""]]
示例 3:
輸入: strs = ["a"]
輸出: [["a"]]
提示:
1 <= strs.length <= 1040 <= strs[i].length <= 100strs[i]僅包含小寫字母
解題思路
首先我們來(lái)搞懂本題的題意,所謂 字母異位詞 就是一個(gè)單詞通過改變單詞內(nèi)字母的順序可以得到另一個(gè)單詞,那么這兩個(gè)單詞就是字母異位詞,例如 abc 和 cba 和 acb。
接下來(lái)要解決的就是如何判斷單詞互為字母異位詞?
因?yàn)樽帜府愇辉~單詞內(nèi)字母及出現(xiàn)次數(shù)相同,所以我可以把單詞內(nèi)的字母排序,這樣互為字母異位詞的單詞排序后的結(jié)果就是相同的,把排序后結(jié)果相同的單詞的下標(biāo)記錄在一組,這樣互為字母異位詞的單詞就被收集到了一組。
最后遍歷得到的信息,將同組的下標(biāo)對(duì)應(yīng)的單詞放到一個(gè)數(shù)組,再將該數(shù)組插入到結(jié)果數(shù)組,最后返回結(jié)果數(shù)組即可。
代碼實(shí)現(xiàn)
var groupAnagrams = function(strs) {
let _strs = [...strs]
const res = []
const map = new Map()
for(let i = 0;i<_strs.length;i++){
let str = _strs[i]
str = str.split('').sort((a,b) => a.localeCompare(b)).join('')
if(map.has(str)){
map.get(str).push(i)
continue
}
map.set(str,[i])
}
map.forEach(item => {
const arr = []
for(let i = 0;i<item.length;i++){
arr.push(strs[item[i]])
}
res.push(arr)
})
return res
}
至此我們就完成了 leetcode-49-字母異位詞分組,更多關(guān)于前端算法字母異位詞分組的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS封裝轉(zhuǎn)換前后端接口數(shù)據(jù)格式工具函數(shù)下劃線<=>大寫
這篇文章主要為大家介紹了JS優(yōu)雅封裝轉(zhuǎn)換前后端接口數(shù)據(jù)格式工具函數(shù)下劃線<=>大寫實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
自定義range?sliders滑塊實(shí)現(xiàn)元素拖動(dòng)方法
這篇文章主要為大家介紹了自定義range?sliders滑塊實(shí)現(xiàn)元素拖動(dòng)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
高級(jí)前端必會(huì)的package.json字段知識(shí)詳解
這篇文章主要為大家介紹了高級(jí)前端必會(huì)的package.json字段知識(shí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
JavaScript高級(jí)程序設(shè)計(jì)之基本引用類型
這篇文章主要介紹了JavaScript高級(jí)程序設(shè)計(jì)之基本引用類型,引用值(對(duì)象)都是某個(gè)特定的引用類型的實(shí)例對(duì)象,例如 Date類型、Function類型,RegExp 正則表達(dá)式類型等等。JavaScript內(nèi)置了一些常用的引用類型給開發(fā)者使用。下面來(lái)看看文章詳細(xì)內(nèi)容2021-11-11
js類型判斷內(nèi)部實(shí)現(xiàn)原理示例詳解
這篇文章主要為大家介紹了js類型判斷內(nèi)部實(shí)現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
微信小程序支付之c#后臺(tái)實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序支付之c#后臺(tái)實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
JS前端性能優(yōu)化解決內(nèi)存泄漏頁(yè)面崩潰
這篇文章主要為大家介紹了JS前端性能優(yōu)化解決內(nèi)存泄漏頁(yè)面崩潰示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
JS圖形編輯器場(chǎng)景坐標(biāo)視口坐標(biāo)的相互轉(zhuǎn)換
這篇文章主要為大家介紹了JS圖形編輯器之場(chǎng)景坐標(biāo)視口坐標(biāo)的相互轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

