题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。
示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
求最长公共前缀,可以用第一个字符串做“哨兵”,从前到后对比每个字符串的前缀,每次截取比较出来的最大公共前缀,再和后面的字符串做比较,比较到最后一个字符串就是所求。
//C语言 char * longestCommonPrefix(char ** strs, int strsSize){ if(strsSize == 0) return ""; char *str = strs[0]; int i, j; for(i = 1; i < strsSize; i++){ j = 0; //注意while的判断条件 while(str[j] && strs[i][j] && str[j] == strs[i][j]) j++; str[j] = ' '; } return str; } //JS /** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function(strs) { let len = strs.length; if(len == 0) return ""; let flagStr = strs[0]; for(let i = 1; i < len; i++){ let j = 0; while(flagStr[j] && strs[i][j] && flagStr[j] == strs[i][j]) j++; flagStr = flagStr.slice(0, j); } return flagStr; };