原题描述

原题链接

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。


示例 1:

输入:strs = [“flower”,”flow”,”flight”]

输出:”fl”

示例 2:

输入:strs = [“dog”,”racecar”,”car”]

输出:””

解释:输入不存在公共前缀。


提示:

0 <= strs.length <= 200

0 <= strs[i].length <= 200

strs[i] 仅由小写英文字母组成

个人解法

Java

JavaScript

  1. /*
  2. * @lc app=leetcode.cn id=14 lang=javascript
  3. *
  4. * [14] 最长公共前缀
  5. */
  6. // @lc code=start
  7. var checkChar = function (str, char, index) {
  8. return str[index] === char;
  9. }
  10. /**
  11. * @param {string[]} strs
  12. * @return {string}
  13. */
  14. var longestCommonPrefix = function (strs) {
  15. let answer = '';
  16. strs.sort((str1, str2) => {
  17. if (str1.length > str2.length) {
  18. return 1;
  19. }
  20. return -1;
  21. })
  22. const str = strs[0];
  23. let index = 0;
  24. for (let i = 0; i < str.length; i++) {
  25. let flag = true;
  26. for (let j = 1; j < strs.length; j++) {
  27. if (!checkChar(strs[j], str[index], index)) {
  28. flag = false;
  29. break;
  30. }
  31. }
  32. if (flag) {
  33. index++;
  34. } else {
  35. break;
  36. }
  37. }
  38. return str.substr(0, index);
  39. };
  40. // @lc code=end

更优解法

Java

JavaScript

大佬讲解链接

  1. /**
  2. * @param {string[]} strs
  3. * @return {string}
  4. */
  5. var longestCommonPrefix = function(strs) {
  6. if(strs.length == 0)
  7. return "";
  8. let ans = strs[0];
  9. for(let i =1;i<strs.length;i++) {
  10. let j=0;
  11. for(;j<ans.length && j < strs[i].length;j++) {
  12. if(ans[j] != strs[i][j])
  13. break;
  14. }
  15. ans = ans.substr(0, j);
  16. if(ans === "")
  17. return ans;
  18. }
  19. return ans;
  20. };