LeetCode 最长公共前缀

Posted MartinHO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 最长公共前缀相关的知识,希望对你有一定的参考价值。

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:

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

我的求解,过程比较复杂

 

import java.awt.List;
import java.util.ArrayList;
import java.util.HashSet;

public class longestCommonPrefix {
  public char[] longestCommon(String[] str) {
    String sum = "";
    System.out.println("字符串数组的长度为:"+str.length);
    //把所有字符串拼接起来
    char[] kk = {};//最后确定的共有的字符数组
    for (int i = 0; i < str.length; i++) {
      sum = sum.concat(str[i]);
    }
    //System.out.print(sum.charAt(0));
    //利用arrayli 把拼接后的字符串去重
    ArrayList<String> list = new ArrayList<String>();
     for (int i = 0; i < sum.length(); i++) {
      //System.out.println(sum.charAt(i));
      if (!list.contains(String.valueOf(sum.charAt(i)))) {
      //System.out.print(list.contains(sum.charAt(i)));
      list.add(String.valueOf(sum.charAt(i)));
      //System.out.print(list);
        }
      }
      //用去重后的字符串与字符串数组里的每一个字符串进行比较,确定是否有相同的字符
      for (int i = 0; i < str.length; i++) {
        //判断字符串数组 与 公同字符串
        int len = 0;
        if (list.size() <= str[i].length()) {  
          len = list.size();
        }else {
          len = str[i].length();
        }
        char[] hh = new char[len];
        for (int j = 0; j < len; j++) {
          //System.out.print(list.get(j));
          //System.out.print(str[i].toCharArray()[j]);
          if (String.valueOf(str[i].toCharArray()[j]).equals(list.get(j)) ) {
          //System.out.println(String.valueOf(str[i].toCharArray()[j]));
          //System.out.println(list.get(j));
          //System.out.print("get it ");
          hh[j] = str[i].toCharArray()[j];
            }
      }
      kk = hh;
      //System.out.println(kk);
      }
      return kk;
    }
public static void main(String[] args) {
    longestCommonPrefix l1 = new longestCommonPrefix();
    String[] sst = new String[] {"dlo","dlk","dlj","dlls"};
    System.out.print(l1.longestCommon(sst));
  }
}

以上是关于LeetCode 最长公共前缀的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-14.最长公共前缀(图)

LeetCode:最长公共前缀14

python(leetcode)-14最长公共前缀

LeetCode 7最长公共前缀

Leetcode--最长公共前缀(14)

leetcode 最长公共前缀