【发布时间】:2020-05-06 04:40:44
【问题描述】:
我正在研究“HackerRank 面试准备工具包”,并且偶然发现了另一个用户的这个解决方案。 解决方案不正确,HackerRank 认为它是“正确的”,我想了解原因。
// find if there is a common substring
string twoStrings(string s1, string s2)
{
int n;
int m;
const char* char_array1;
const char* char_array2;
unordered_map<char, char> map;
n = s1.size();
m = s2.size();
char_array1 = s1.c_str();
char_array2 = s2.c_str();
for (int i = 0; i < n - 1; i++)
map[char_array1[i]] = char_array1[i + 1];
for (int i = 0; i < m; i++)
if (map[char_array2[i]] != 0)
return "YES";
return "NO";
}
我传入的值是:
beetroots & sandals
代码返回“NO”,这是不正确的,因为两个单词中都出现了“s”。
【问题讨论】:
-
我猜是因为 HackerRank 上的测试集不够强大。
-
HackerRank 上有指向它的链接吗?
-
我猜当第一个字符串中只有最后一个符号与第二个字符串中的一个匹配时,他们没有测试用例,并且此函数仅因此而失败。
标签: c++ arrays string dictionary