LeetCode上求最长公共字符前缀字符串问题——Longest Common Prefix

1.题目如下:

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.

2.中文翻译:

编写一个函数来查找字符串数组中最长的公共前缀字符串。
如果没有共同的前缀,则返回一个空字符串“”。
例1:
输入: ["flower","flow","flight"]

输出:“fl”

例2:
输入: ["dog","racecar","car"]
输出:“”
说明:输入字符串中没有公共前缀。
注意:

所有给定的输入都以小写字母a-z表示。

3.题目解析:

公共最长的前缀字符串:要求所有字符串中都出现相同的连续字符串,且出现位置从该字符串初始位置起。


输入要求是字符串数组,输出为字符串,我们可以通过数组第一个元素与其他元素相比较,从第一个字符串第一个字符开始,只要第一个元素的前缀字符串在其他元素中没有出现,则返回“”,若出现,则记下这个值,移到下一位继续比较。我们需要在每次比较时判断子字符串出现的位置是否为其他元素的第一个位置,所有其他元素都是第一个位置的话,则它是前缀字符串。

函数说明:

int indexOf(String str):该函数返回字符串中子字符串str出现的位置,可以通过它来比较是否出现前缀字符串。

4.程序代码:

    public String longestCommonPrefix(String[] strs) {
        int i,j,flag=0;
        String str="";
        String result="";
        if (strs.length==0) {
return result;  //若为空,返回“”
}
        else {
         for (i = 0;  i< strs[0].length(); i++) {      //用第一个字符串来比较
      str=str+strs[0].charAt(i);       //依次获取第一个字符串的前缀字符串
      //System.out.println(str+" ");
      for (j = 1; j < strs.length;j ++) {       //与其他元素来做比较
      int location=strs[j].indexOf(str);      //获取出现字符串出现位置
      if (location==0) {         //判定是否为前缀字符串
      flag++;
      }
      //System.out.println(location+" ");
      }
      if (flag==strs.length-1) {  //结果为前缀字符串
      result=str;      //记下当前的公共前缀字符串
      flag=0;           //继续为下一步作比较
      //System.out.println(result+" ");
      }
      else {
      flag=0;
      }
      }
          return result;
}

    }

5.通过情况




猜你喜欢

转载自blog.csdn.net/kuishao1314aa/article/details/80694524