力扣14练手 编写一个函数来查找字符串数组中的最长公共前缀 java版
程序员文章站
2024-02-24 23:24:04
...
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
下面是代码 两种方法 第一种自己想出来的很耗时 第二种是看了官方答案后写的
我的是从小到大扩展字符串 第二种是从大到小缩小字符串
package leetcode.easy.week01;
public class problem14 {
//第一种
public String longestCommonPrefix(String[] strs) {
if(strs.length==0){
return "";
}
if(strs.length==1){
return strs[0];
}
String str= strs[0];//获取字符串数组第一个
String gzfc="";//公共前缀
for(int b=1;b<str.length()+1;b++){
String zfc=str.substring(0,b);
if(zfc.equals("")){
return "";
}
for(int a=1;a<strs.length;a++){
//遍历字符串数组
if(strs[a].equals("")){
return "";
}
String i="";
try{
i= strs[a].substring(0,b);
}catch (Exception e){
return strs[a];
}
if(i.equals(zfc)){
gzfc=zfc;
continue;
}else{
//不包含了
gzfc=str.substring(0,b-1);
return gzfc;
}
}
}
return gzfc;
}
//第二种
public String longestCommonPrefix02(String[] strs) {
if(strs.length==0){
return "";
}
String ggzfc=strs[0];
for(int a=0;a<strs.length;a++){
while(strs[a].indexOf(ggzfc) !=0){
ggzfc=ggzfc.substring(0,ggzfc.length()-1);
if(ggzfc.length()==0){
return "";
}
}
}
return ggzfc;
}
public static void main(String[] args) {
problem14 pro=new problem14();
String s = pro.longestCommonPrefix(new String[]{"ac","ac","a","a"});
System.out.println(s);
}
}
上一篇: leetcode最长公共前缀C++版