我正在帮助一位 friend 编写一个函数,该函数将采用一串空格分隔的单词并返回最长的单词,但我的代码在用于检查它的 3 个测试中失败了 2 个。
这些是测试:
describe("test for longest function functionality", function() {
it("should return correct output for normal strings", function() {
expect(longest("A")).toEqual("A");
expect(longest("I love Avatar")).toEqual("Avatar");
expect(longest("The stupidities of youth")).toEqual("stupidities");
});
it("should return correct output for gibberish", function() {
expect(longest("hgdydrxtfEq Rradsc tstsa taeWwwec fgdd")).toEqual("hgdydrxtfEq");
});
it("should work for sentences with numbers", function() {
expect(longest("This is a sentence with a number 7685838788")).toEqual("7685838788");
});
});
这是我到目前为止的解决方案:
function longest(str) {
var longestStart = 0;
var longestEnd = 0;
var current = 0;
var currentLength = 0;
while (current < str.length) {
if (str.charAt(current) == ' ') {
if (currentLength > (longestEnd - longestStart)) {
longestStart = (current - currentLength);
longestEnd = current;
}
currentLength = 0;
} else {
currentLength++;
}
current++;
}
return str.substring(longestStart, longestEnd);
}
最佳答案
就我个人而言,我会通过像这样的函数来做到这一点:
function longestSubstring(stringToSplit) {
var arrayOfStrings = stringToSplit.split(" ");
var longestString = arrayOfStrings[0];
for (var i = 0; i < arrayOfStrings.length; i++) {
if (longestString.length < arrayOfStrings[i].length) {
longestString = arrayOfStrings[i];
}
}
console.log(longestString);
}
longestSubstring("Hello my friend");
longestSubstring("1 12 123 1234 12345");
longestSubstring("aaaaaaah hello yell");
关于javascript - 功能未通过 3 项测试中的 2 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420569/