拿到Google low ball 后紧迫时间线的升包历程

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
有你有策略
微策略(MicroStrategy)
2019校园招聘火热进行中
E轮2.5亿美元融资
K12教育独角兽一起作业诚聘
机器学习/数据统计/教育等职位
码农求职神器Triplebyte:
不用海投
内推多家公司面试
高效直聘+内推,70%面试率
AI帮你免费完善简历
直击全美十万个科技职位
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 330|回复: 5
收起左侧

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

[复制链接] |试试Instant~
我的人缘0
frosty 发表于 2018-7-1 13:04:26 | 显示全部楼层 |阅读模式
该内容以做模糊处理,您需要登录后才可查看. 登录 | Sign Up 注册获取更多干货
本楼: 【顶】   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)   【踩】
全局: 顶  92% (73)
 
 
7% (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)   【踩】
全局: 顶  81% (801)
 
 
18% (176)  踩
确实很奇怪..

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

我的人缘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-11-16 17:37

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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