最长公共前缀。题意是给一组字符串,请找出这组字符串的最长公共前缀。若没有公共前缀则返回' '。例子,
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.
这个题没有什么比较巧妙的思路,就是暴力搜索。在处理了边界case比如input为空的情况下,我们找到input里面的第一个单词,然后拿着这个单词的每个字母在剩下的其他单词里一个个扫,看其他单词同样位置上的字母是否一样。比如第一个例子,拿到flower之后,从F开始,看后面每个单词的第一个字母是否是f,若是则进入下一轮,看所有单词的第二个字母是否都是L。开始看第三个字母O的时候,遍历到flight的时候,12行的判断为false所以返回了str.slice(0, i),是从第一个字母到第i - 1个字母组成的substring。
时间O(n^2) - n是字母个数
空间O(1)
1 /** 2 * @param {string[]} strs 3 * @return {string} 4 */ 5 var longestCommonPrefix = function longestCommonPrefix(strs) { 6 // corner case 7 if (!strs.length) return ''; 8 9 // normal case 10 for (let i = 0; i < strs[0].length; i++) { 11 for (let str of strs) { 12 if (str[i] !== strs[0][i]) { 13 return str.slice(0, i); 14 } 15 } 16 } 17 return strs[0]; 18 }