【LeetCode】Word Pattern

我在 LeetCode 上练习 Word Pattern(题目连接点这里),写的程序放在本地VS2008上跑如下实例:

pattern = "abba", str = "dog cat cat fish" should return false.

没有问题,返回的是false,但是放在LeetCode 上提交,提示错误,错误如下:

图片描述

代码如下:

class Solution {

public:

bool wordPattern(string pattern, string str) {

const int len = pattern.length();

char * c = new char[len+1];

strcpy(c, pattern.c_str() );

char * arr[1024];

int num = 0;

char * pch;

pch = strtok(c, " ");

while (pch != NULL)

{

arr[num++] = pch;

pch = strtok(NULL, " ");

}

vector<char> vecStr;

vector<char *> vecPattern;

for (int i = 0; i < num; ++i)

{

for (int j = 0; j < vecStr.size(); ++j)

{

if (vecStr[j] == str[i] && *(vecPattern[j]) != *(arr[i]) )

{

return false;

}

}

for (int j = 0; j < vecPattern.size(); ++j)

{

if (*(vecPattern[j]) == *(arr[i]) && vecStr[j] != str[i])

{

return false;

}

}

vecStr.push_back(str[i]);

vecPattern.push_back(arr[i]);

}

return true;

}

};

求指教。

回答:

我拿你的代码运行了一下发现就是错的呀。为什么呢,因为

    pch = strtok(c, " ");

while (pch != NULL)

{

arr[num++] = pch;

pch = strtok(NULL, " ");

}

这里你的c本来应该是str,你却指向了pattern。

而且我觉得你写到后面pattern和str可能在你脑子里已经乱掉了,你还得接着往下改。

以上是 【LeetCode】Word Pattern 的全部内容, 来源链接: utcz.com/p/191275.html

回到顶部