标签: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));
}
}
标签:concat add 判断 int system 解释 cat 返回 class
原文地址:https://www.cnblogs.com/martinho/p/13298415.html