我只被允许使用谷歌文档写作。
你能告诉我我做错了什么吗?招聘人员不肯回答我为什么不及格
任务1:实现verify(text)函数,验证文本中的括号是否
嵌套正确。你需要考虑三种类型:()、[]、〈〉且仅限于这些类型。
我的回答:
const verify = (text) => {
const parenthesesStack = [];
for( let i = 0; i<text.length; i++ ) {
const closingParentheses = parenthesesStack[parenthesesStack.length - 1]
if(text[i] === “(” || text[i] === “[” || text[i] === “<” ) {
parenthesisStack.push(text[i]);
} else if ((closingParentheses === “(” && text[i] === “)”) || (closingParentheses === “[” && text[i] === “]”) || (closingParentheses === “<” && text[i] === “>”) ) {
parenthesisStack.pop();
}
};
return parenthesesStack.length ? 0 : 1;
}
任务2:尽可能简化以下实施。如果您还可以在简化过程中提高性能,那就更好了!仅供参考:这段代码超过35行,包含300多个标记,但它可以用5行和60个标记来编写。函数见下页。
// 'a'和'B'是单个字符串
function func2(s, a, b) {
var match_empty=/^$/ ;
if (s.match(match_empty)) {
return -1;
}
var i=s.length-1;
var aIndex=-1;
var bIndex=-1;
while ((aIndex==-1) && (bIndex==-1) && (i>=0)) {
if (s.substring(i, i+1) == a)
aIndex=i;
if (s.substring(i, i+1) == b)
bIndex=i;
i--;
}
if (aIndex != -1) {
if (bIndex == -1)
return aIndex;
return Math.max(aIndex, bIndex);
} else {
if (bIndex != -1)
return bIndex;
return -1;
}
};
我的回答:
const funcSimplified = (s,a,b) => {
if(s.match(/^$/)) {
return -1;
} else {
return Math.max(s.indexOf(a),s.indexOf(b))
}
}
2条答案
按热度按时间pu82cl6c1#
首先,我会清楚地知道招聘人员问了些什么,大胆地用项目符号指出,并且要明确。
其次,我会让你从第一个“for”语句开始就失败。请看我的注解:
不完全是你的函数或逻辑的意图在做什么,但它会失败,基于我所看到的。测试它在浏览器或使用typescript操场。你可以写javascript在那里了。
vsikbqxv2#
没有招聘人员的反馈很难说。但我可以看出你误解了第二个功能。
您将返回
Math.max(s.indexOf(a),s.indexOf(b))
而不是Math.max(s.lastIndexOf(a), s.lastIndexOf(b))
原始代码从
i=len(str) - 1
开始,一直减少到0
,他们反向阅读字符串。可能的实现方式是
或者是一个更简洁的例子,可以说更糟糕(因为可读性更差)
我使用
a || undefined
来强制一个空字符串为undefined,因为:"canal".lastIndexOf("") = 5
"canal".lastIndexOf(undefined) = -1
原始函数将返回-1
另外,你问过是否允许你使用ES6+语法吗?你得到了一个普通的JS,你用ES6+实现了等价的JS。一些招聘人员有恶意的POV。