leetcode-每日一题648. 单词替换(哈希)

简介: 将字符串数组中的所有字符串存入哈希表中,遍历sentence中的所有单词,从短到长遍历单词前缀,对比哈希表中的单词是否存在,存在则替换。

1264340f1237410fa1ea3b0eade3264c.png


题目链接:https://leetcode.cn/problems/replace-words/


思路


方法:哈希匹配


直观想法


将字符串数组中的所有字符串存入哈希表中,遍历sentence中的所有单词,从短到长遍历单词前缀,对比哈希表中的单词是否存在,存在则替换。


算法


1.将dictionary字符串数组中的所有字符串存入哈希表mps中


2.用strings.Split方法以空格为分隔符,将单词分割成字符串数组,遍历数组

1) 从短到长匹配哈希表中,找到单词的最短词根,将单词替换


3.用strings.Join方法将字符串数组以空格为分隔符拼接回来


代码示例


func replaceWords(dictionary []string, sentence string) string {
    mps := map[string]bool{}
    for i := range dictionary{
        mps[dictionary[i]] = true
    }
    str := strings.Split(sentence, " ")
    for i := range str{
        for j := 1; j <= len(str[i]); j++{
            if mps[str[i][:j]] == true{
                str[i] = str[i][:j]
                break
            }
        }
    }
    return strings.Join(str, " ")
}


c82b2b2a1ed347919e7534a710fe787d.png


复杂度分析


  • 时间复杂度:O(n + ∑wi2) 其中n表示dictionary的单词数量,构建哈希集合消耗 O(n)时间,wi是 sentence 分割后第 ii 个单词的字符数,判断单词的前缀子字符串是否位于哈希集合中消耗 O(wi2)


  • 空间复杂度:O(n + s) 其中n表示dictionary的单词数量,构建哈希集合消耗 O(n)空间,s表示 sentence 分割的出来的单词数量,消耗O(s)的空间
目录
相关文章
|
1月前
《LeetCode》—— 哈希
《LeetCode》—— 哈希
|
15天前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
19天前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
19天前
|
存储 SQL 算法
LeetCode题58: 5种算法实现最后一个单词的长度【python】
LeetCode题58: 5种算法实现最后一个单词的长度【python】
|
1月前
|
存储 C语言 容器
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别(下)
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别
27 1
|
1月前
|
存储 C语言 容器
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别(中)
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别
27 1
|
1月前
|
存储 自然语言处理 C语言
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别(上)
从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别
32 1
|
15天前
|
算法
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独
|
19天前
|
存储 SQL 算法
LeetCode 题目 87:递归\动态规划\哈希实现 扰乱字符串
LeetCode 题目 87:递归\动态规划\哈希实现 扰乱字符串
|
19天前
|
数据采集 机器学习/深度学习 算法
力扣79题:单词搜索
力扣79题:单词搜索