leetcode-648. Replace Words
来源:互联网 发布:全国房地产数据服务商 编辑:程序博客网 时间:2024/05/16 01:17
考察点:trie树,指针;
思路:根据dict生成trie树,判断是否是_is_end时需要留意。
C++代码:
class Solution {public: struct TrieNode{ bool _is_end; TrieNode * next[26]; TrieNode(){ _is_end = false; for (int i=0; i<26; i++) { next[i] = NULL; } }; }; TrieNode * root; void init(vector<string> & dict) { root = new TrieNode(); TrieNode * temp=NULL; for (int i=0; i<dict.size(); i++) { temp = root; for (int j=0; j<dict[i].size(); j++) { int index = dict[i][j] - 'a'; if (temp->next[index] == NULL) { temp->next[index] = new TrieNode(); } temp = temp->next[index]; } temp->_is_end = true; } } vector<string> split_str(string sentence) { vector<string> ret; while(true) { int index = sentence.find(' '); if (index == string::npos) { ret.push_back(sentence); break; } ret.push_back(sentence.substr(0,index)); sentence = sentence.substr(index+1); } return ret; } string process(string word) { int size = word.size(); TrieNode * temp = root; for (int i=0; i<size; i++) { int index = word[i] - 'a'; if (temp->next[index] == NULL) { return word; } else if (temp->next[index]->_is_end==true) { return word.substr(0,i+1); } temp = temp->next[index]; } return word; } void replace(vector<string>& words) { for(int i=0; i<words.size(); i++) { words[i] = process(words[i]); } } string get_result_str(vector<string> & words) { string ret; for (int i=0; i<words.size(); i++) { if(i == words.size() - 1) { ret += words[i]; } else { ret += words[i] + " "; } } return ret; } string replaceWords(vector<string>& dict, string sentence) { init(dict); vector<string> words = split_str(sentence); replace(words); string ret = get_result_str(words); return ret; }};
阅读全文
0 0
- Leetcode--648. Replace Words
- leetcode 648. Replace Words
- leetcode-648. Replace Words
- leetcode 648. Replace Words
- leetcode 648. Replace Words
- LeetCode 648. Replace Words 字典树练习
- leetcode 648. Replace Words 字典树
- 【LeetCode】648.Replace Words(Medium)解题报告
- leetcode 648. Replace Words 公共前缀
- LeetCode.648 Replace Words
- LeetCode#648 Replace Words (week14)
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 二维数组练习
- 面试时自我介绍怎么说,一个程序媛找了半年工作之后,写下了这段文字:
- 洛谷1182 数列分段Section II
- 数据结构思维 第二章 算法分析
- 51nod 1137矩阵乘法【矩阵】
- leetcode-648. Replace Words
- 推广中文域名的重要性和建议
- 有趣的Java-J03
- Python模块
- P02: 完全背包问题
- SQLServer--带输出参数的存储过程
- Java中getResourceAsStream的用法
- P03: 多重背包问题
- leetcode 279. Perfect Squares