算法14(字符串)-字符串数组的最长公共前缀

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

  • 如果不存在公共前缀,返回空字符串 “”。
  • 示例 1:
  • 输入: [“flower”,”flow”,”flight”]
  • 输出: “fl”
  • 示例 2:
  • 输入: [“dog”,”racecar”,”car”]
  • 输出: “”
  • 解释: 输入不存在公共前缀。
  • 说明:
  • 所有输入只包含小写字母 a-z 。
  • 来源:力扣(LeetCode)
  • 链接:https://leetcode-cn.com/problems/longest-common-prefix
  • 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解析:采用先保存你一个,然后后面的通过控制指针的方式进行按个遍历,采用暴力解法
image.png
依次进行更新最小前缀的方式进行求解,如图

public class longestCommonPrefix {
  /**
   * @param
   * @return
   */
  public String longestCommonPrefix(String [] strs) {
    //1.拿到每一个数组中的字符串,保存下来
    //2.得到字符串中最小的一个长度,遍历此长度下的其余字符串的一个前n项的值是否相等,相等就返回相等的具体的字符,否则返回 ""
    if(strs.length == 0 || strs == null){return "";}
    String prefix = strs[0];
    int minLen = prefix.length();
    //找到最小的一个长度,这个,最长前 缀取决于短边
    for(int i=1; i<strs.length; i++){
      //遍历求最小的长度
      if(strs[i].length() < minLen) minLen = strs[i].length();
    }
    //进行于后面的字符串进行比较,比较得到最长的一个串进行输出
    StringBuilder res = new StringBuilder();
    for(int j=0; j< minLen; j++){
      char ch = strs[0].charAt(j);
      for(int k=1; k<strs.length ;k++){
        if(ch != strs[k].charAt(j)){
          return res.toString();
        }
      }
      res.append(ch);
    }
    return res.toString();
  }

  public static void main(String[] args) {
    System.out.println(new longestCommonPrefix().longestCommonPrefix(new String[]{"flower","flow","flight"}));
  }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com

文章标题:算法14(字符串)-字符串数组的最长公共前缀

字数:427

本文作者:一叶知秋

发布时间:2020-07-04, 16:24:45

最后更新:2020-07-04, 16:26:19

原始链接:http://yoursite.com/2020/07/04/arithmtic/14-%E5%AD%97%E7%AC%A6%E4%B8%B2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册 github