码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 最长公共前缀

时间:2020-07-14 13:17:25      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:concat   add   判断   int   system   解释   cat   返回   class   

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

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

示例 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 最长公共前缀

标签:concat   add   判断   int   system   解释   cat   返回   class   

原文地址:https://www.cnblogs.com/martinho/p/13298415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!