I have seen evaluators of coding tests blindly believing that
O(1) is faster than O(log(n)) is faster than O(n) is faster than O(n^2) is faster than O(2^n) is faster than O(n!)
and sometimes judging the candidates wrong. I will give here an example where O(n^2) is better than O(n)
O(1) is faster than O(log(n)) is faster than O(n) is faster than O(n^2) is faster than O(2^n) is faster than O(n!)
and sometimes judging the candidates wrong. I will give here an example where O(n^2) is better than O(n)
PROBLEM
14. Longest Common Prefix
Easy
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string
""
.
Example 1:
Input: ["flower","flow","flight"] Output: "fl"
Example 2:
Input: ["dog","racecar","car"] Output: "" Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters
a-z
.SOLUTION in O(n): https://repl.it/@VinitKhandelwal/longest-prefix-javascript-in-n-time
const longestPrefix = arr => {
if (arr.length === 1) {
return arr[0];
} else if (arr.length === 0) {
return "";
}
let check = true
let char;
let condition = "(arr[0][j] === arr[1][j])";
for (let i = 2; i < arr.length; i++) {
condition += ` && (arr[0][j] === arr[${i}][j])`;
}
let end = 0;
let j = 0;
while (eval(condition) && arr[0][j] !== undefined) {
end++;
j++;
}
return arr[0].slice(0, end);
}
Test Input
console.log(longestPrefix(["Jabine","Jaabinder","Jabong"]));
Output
Jab
Takes about 150 ms to execute.
SOLUTION in O(n^2): https://repl.it/@VinitKhandelwal/longest-prefix-javascript
const longestPrefix = arr => {
if (arr.length === 0) {
return "";
}
if (arr.length === 1) {
return arr[0];
}
let end = 0;
let check = false
for (let j = 0; j < arr[0].length; j++){
for (let i = 1; i < arr.length; i++) {
if (arr[0][j] !== arr[i][j]) {
check = true;
break;
}
}
if (check) {
break;
}
end++;
}
return (arr[0].slice(0, end))
}
Test Input
console.log(longestPrefix(["Jabine", "Jabinder", "Jabbong"]))
Output
Jab
Takes about 50 ms to execute.
Comments
Post a Comment