打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
LeetCode之Longest Common Prefix

1、题目

Write a function to find the longest common prefix string amongst an array of strings


2、代码实现

package leetcode.chenyu.test;

public class LongestCommonPrefix {
public static void main(String[] args)  {
String [] ss = {"12345", "3234", "234"};
String [] ss1 = {"flower", "flow", "flight"};
String [] ss2 = {"ca", "a"};
String [] ss3 = {"a", "a"};
String [] ss4 = {"aa","ab"};
String [] ss5 = {"abca","aba","aaab"};
String result =longestCommonPrefix(ss5);
System.out.printf("result1111:" + result);

}
public static boolean isNull(String s) {
if(s == null || s.length() == 0) {
return true;
}
return false;
} 
public  static String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length ==0) {
return "";
}
int length = strs.length;
if (length == 1) {
return strs[0];
}
int minLength = Integer.MAX_VALUE;
int index = 0;
for (int i = 0; i < strs.length; ++i) {
 if (isNull(strs[i])) {
 return "";
 }
 if (minLength > strs[i].length()) {
 minLength = strs[i].length();
 index = i;
 }
}
String result = "";
for (int i = 1; i <= minLength; ++i) {
 int count = 0;
 for (int j = i; j <= minLength; ++j) {
  String s =  strs[index].substring(count++, j);
  System.out.print("s:" + s + "\t");
  int flag = 0;
  for (int k = 0; k < length; k++) {
  if (k != index) {
  if (!strs[k].contains(s)) {
  break;
  } else {
 flag++;
 System.out.print("flag:" + flag + "\t");
 if (flag == length - 1) {
 if (result.length() < s.length()) {
  int num = 0;
  for (int h = 0; h < length; h++) {
   if (!strs[h].startsWith(s)) {
    break;
   } else {
   num++;
   }
  }
  if (num == length)
  result = s;
 }
 System.out.println("result:" + result + "\t");
 break;
 }
   }
   } 
  }
 }
}
return result;
}
}
特么一开始看错题目,虽然结果验证没有出问题,但是超时了,日了狗
下面的代码是求 字符串数组种最大的公共子串
package leetcode.chenyu.test;

public class LongestCommonPrefix {
public static void main(String[] args)  {
String [] ss = {"12345", "3234", "234"};
String [] ss1 = {"flower", "flow", "flight"};
String [] ss2 = {"ca", "a"};
String [] ss3 = {"a", "a"};
String [] ss4 = {"aa","ab"};
String [] ss5 = {"abca","aba","aaab"};
String result =longestCommonPrefix(ss5);
System.out.printf("result1111:" + result);

}
public static boolean isNull(String s) {
if(s == null || s.length() == 0) {
return true;
}
return false;
} 
public  static String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length ==0) {
return "";
}
int length = strs.length;
if (length == 1) {
return strs[0];
}
int minLength = Integer.MAX_VALUE;
int index = 0;
for (int i = 0; i < strs.length; ++i) {
 if (isNull(strs[i])) {
 return "";
 }
 if (minLength > strs[i].length()) {
 minLength = strs[i].length();
 index = i;
 }
}
String result = "";
for (int i = 1; i <= minLength; ++i) {
 int count = 0;
 for (int j = i; j <= minLength; ++j) {
  String s =  strs[index].substring(count++, j);
  System.out.print("s:" + s + "\t");
  int flag = 0;
  for (int k = 0; k < length; k++) {
  if (k != index) {
  if (!strs[k].contains(s)) {
  break;
  } else {
 flag++;
 System.out.print("flag:" + flag + "\t");
 if (flag == length - 1) {
 if (result.length() < s.length()) {
  result = s;
 }
 System.out.println("result:" + result + "\t");
 break;
 }
   }
   } 
  }
 }
}
return result;
}
}

最后修改后可以通过LeetCode的代码
public class Solution {
    public static boolean isNull(String s) {
if(s == null || s.length() == 0) {
return true;
}
return false;
} 
public  static String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length ==0) {
return "";
}
int length = strs.length;
if (length == 1) {
return strs[0];
}
int minLength = Integer.MAX_VALUE;
int index = 0;
for (int i = 0; i < strs.length; ++i) {
 if (isNull(strs[i])) {
 return "";
 }
 if (minLength > strs[i].length()) {
 minLength = strs[i].length();
 index = i;
 }
}
String result = "";
for (int i = 1; i <= minLength; ++i) {
String s =  strs[index].substring(0, i);
int flag = 0;
for (int k = 0; k < length; k++) {
if (k != index) {
if (!strs[k].contains(s) || !strs[k].startsWith(s)) {
break;
} else {
flag++;
    if (flag == length - 1) {
if (result.length() < s.length()) {
result = s;
}
    break;
   }
     }
     } 
     }
}
return result;
}
}


 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
leetcode - 最长公共前缀
​LeetCode刷题实战14: 最长公共前缀
【小Y学算法】每日LeetCode打卡——15.实现 strStr()
258 [LeetCode] Find the Difference
LeetCode 767. 重构字符串
java字符串分割
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服