18 Fall | Robotics PhD 申请小结 | 内附个人SoP

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
前Google华人高管创立
面试offer一键直通
Leap.ai助你进入热门独角兽
查看: 223|回复: 5
收起左侧

[Leetcode] 求帮看leetcode replace words有run time error

[复制链接] |试试Instant~
我的人缘0
frosty 发表于 2018-7-1 13:04:26 | 显示全部楼层 |阅读模式
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
求大牛帮忙看看以下的code,明明debug了没问题可是leetcode一提交就有个case是run time error。感激不尽!```
class TrieNode {
public:
        string word;
        TrieNode* children[26];
        TrieNode() {
        }
};
class Solution {
public:
    string replaceWords(vector<string>& dict, string sentence) {
                string res;
        TrieNode* root = new TrieNode();
                for (int i = 0; i < dict.size(); i++){
                        string cur = dict[i];
                        TrieNode* curNode = root;
                        for (int j = 0; j < cur.size(); j++){
                                if (curNode->children[cur[j]-'a'] == NULL){
                                        curNode->children[cur[j]-'a'] = new TrieNode();
                                }
                                curNode = curNode->children[cur[j]-'a'];
                        }
                        curNode->word = cur;
                }
                int i = 0;
                int pre = 0;
                while (i <= sentence.size()){
                        if ((i == sentence.size()) || (sentence[i] == ' ')){
                                string cur = sentence.substr(pre,i-pre);
                                TrieNode* curNode = root;
                                for (int j = 0; j < cur.size(); j++){
                                        if (curNode->children[cur[j]-'a']!=NULL){
                                                curNode = curNode->children[cur[j]-'a'];
                                                if (curNode->word.empty() == false){
                                                        res = res + curNode->word + " ";
                                                        break;
                                                }
                                        }
                                        else{
                                                res = res + cur + " ";
                                                break;
                                        }
                                }
                                if (i >= sentence.size()){
                                        break;
                                }
                                i++;
                                pre = i;
                        }
                        else{
                                i++;
                        }
                }
                res.erase(res.begin()+res.size()-1);
                return res;
    }
};

```

上一篇:立帖刷题,把过去欠的都还上,加油!!
下一篇:Tree Travel 有什么比较系统讲解的网站或者数据吗
我的人缘0
忘记密码 发表于 2018-7-6 12:37:09 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  91% (67)
 
 
8% (6)  踩
我把你class TrieNode里面的
TrieNode* children[26];
TrieNode() {}
改成
vector<TrieNode*> children;
TrieNode() : children(26, NULL) {}
算一个超大的case就没有runtime error了,但是得到一个wrong result。你看看其他地方逻辑是不是还有问题。
不过你现在的问题(至少一部分)是没有初始化。C的array的初值应该是undefined,这样程序效率高。
想起一句话 C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.

顺便都是public的话写成struct不就好了。
回复

使用道具 举报

全球28万学生4.7分推荐
我的人缘1
肥宅快乐水 发表于 2018-7-4 04:55:58 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  78% (556)
 
 
21% (152)  踩
确实很奇怪..

我发现的是他insert这块会出错.. 再具体的就不知道咯..
回复

使用道具 举报

我的人缘0
hzyfree 发表于 2018-7-4 05:26:25 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  94% (64)
 
 
5% (4)  踩
老哥,你要把报错的case和错误信息po出来啊
回复

使用道具 举报

我的人缘1
肥宅快乐水 发表于 2018-7-6 11:17:43 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  78% (556)
 
 
21% (152)  踩
弄明白了吗大胸呆

21.000+ students read the Road to learn React. The course weaves all the opinionated roadmaps into one roadmap to master React. It gives you all the fundamentals in React. You will build a Hacker News App along the way.

回复

使用道具 举报

我的人缘0
 楼主| frosty 发表于 2018-7-8 12:58:52 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
忘记密码 发表于 2018-7-6 12:37
我把你class TrieNode里面的
TrieNode* children[26];
TrieNode() {}

多谢!之前确实debug出来一个逻辑性的问题,是sentence中某个单词比dictionary里要短的情况没有考虑进去,再加上您提议的初始化,已经过了!code如下:
```
class TrieNode {
public:
        string word;
        TrieNode* children[26];
        TrieNode() {
                for (int i = 0; i < 26; i++){
                        children = NULL;
                }
        }
};
class Solution {
public:
    string replaceWords(vector<string>& dict, string sentence) {
                string res;
        TrieNode* root = new TrieNode();
                for (int i = 0; i < dict.size(); i++){
                        string cur = dict;
                        TrieNode* curNode = root;
                        for (int j = 0; j < cur.size(); j++){
                                if (curNode->children[cur[j]-'a'] == NULL){
                                        curNode->children[cur[j]-'a'] = new TrieNode();
                                }
                                curNode = curNode->children[cur[j]-'a'];
                        }
                        curNode->word = cur;
                }
                int i = 0;
                int pre = 0;
                while (i <= sentence.size()){
                        if ((i == sentence.size()) || (sentence == ' ')){
                                string cur = sentence.substr(pre,i-pre);
                                TrieNode* curNode = root;
                                for (int j = 0; j < cur.size(); j++){
                                        if (curNode->children[cur[j]-'a']!=NULL){
                                                curNode = curNode->children[cur[j]-'a'];
                                                if (curNode->word.empty() == false){
                                                        cur = curNode->word;
                                                        break;
                                                }
                                        }
                                        else{       
                                                break;
                                        }
                                }
                                res = res + cur + " ";
                                if (i >= sentence.size()){
                                        break;
                                }
                                i++;
                                pre = i;
                        }
                        else{
                                i++;
                        }
                }
                res.erase(res.begin()+res.size()-1);
                return res;
    }
};


```
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-9-21 21:38

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表