最长公共前缀 -LeetCode

古城微笑少年丶 2022-05-19 02:44 376阅读 0赞

题目:

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

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

示例1:

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

输出: “fl”

示例1:

输入: [“dog”,”rececar”,”car”]

输出: “”

说明:所有输入只包含小写字母 a-z。

解题:

首先找到长度最小的字符串 minString,假设此字符串为公共前缀,依次判断各个字符串是否包含此前缀(str.indexOf() == 0);若不满足,则将 minString 去掉最后一个字符,再进行判断,直到有满足的为止,若 minString 的长度减至0,那么则不存在公共前缀,输出“”;否则 minString 即为公共前缀。

  1. class Solution {
  2. public String longestCommonPrefix(String[] strs) {
  3. int minLen = Integer.MAX_VALUE;
  4. String minString = "";
  5. for(int i = 0;i < strs.length; i++){
  6. if("".equals(strs[i])){
  7. return "";
  8. }
  9. if(strs[i].length()<minLen){
  10. minLen = strs[i].length();
  11. minString = strs[i];
  12. }
  13. }
  14. int i = 0;
  15. while(i<strs.length){
  16. if(strs[i].indexOf(minString) != 0){
  17. minString = minString.substring(0,minLen-1);
  18. minLen = minLen-1;
  19. if(minLen == 0){
  20. return "";
  21. }
  22. i = 0;
  23. continue;
  24. }
  25. i++;
  26. }
  27. return minString;
  28. }
  29. }

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读