最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
题解
一、先判断字符串数组长度,为0和null时返回空串" "。
二、初始化一个变量prefix=strs[0];for循环从1开始遍历每次比较两个字符数组的公共前缀,把这两个作为参数传入到一个pre方法中,声明一个变量len为子两个字符串短的长度,并作为for循环终止条件,声明一个变量count记录公共前缀的长度,同时作为for循环的初始条件。一次判断这两个字符串相同字符,不同则结束循环,用substring()方法截取公共字符作为一个新的字符串,再进行下一次比较。
class Solution {
public String longestCommonPrefix(String[] strs) {
// String[] strs = {"flower","flow"};
String count = "";
if(strs==null||strs.length==0) {
System.out.println(count);
}
String prefix = strs[0];
for(int i = 1;i < strs.length;i++) {
// 每次判断prefix与下一个数组字符串相同前缀
prefix = pre(prefix,strs[i]);
if(prefix.length()==0) {
break;
}
}
return prefix;
}
// 判断两个字符串相同前缀
public String pre(String prefix,String str) {
int count = 0;
// 获取短字符串长度
int len = prefix.length()>str.length()? str.length():prefix.length();
for(;count < len;) {
if(prefix.charAt(count)==str.charAt(count)) {
count++;
}else {
break;
}
}
// 截取相同字符并返回
return prefix.substring(0, count);
}
}