编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: ""解释:不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
思路:每个字符串的第一个数先比较,然后第二个数比较,......,只要相同都存到一个字符串中,不相同时,整个循环结束。
遇到的问题:开始元素比较长度默认第一个元素长度,当第一个元素非最短元素时便报错,解决方案:先求最短元素长度,设为循环次数。
起初最外层循环为元素位数移动的循环,内层循环为元素移动的循环,如果字符串数组为空,则出现错误,解决方案:优先判断是否为空。
class Solution {
public String longestCommonPrefix(String[] strs) {
//判断量,遇见不同元素变为0
int judg = 1;
//比较量x
char x;
//返回值字符串,默认为null
String re="";
//因为最外层循环为字符串元素,如果字符串数组为空时发生错误,所以优先判断是否为空
if(strs.length==0)
return re;
//求最短元素长度
int min = strs[0].length();
for(int k = 1;k < strs.length;k++)
{
if(strs[k].length()<min)
min = strs[k].length();
}
//遍历字符串元素,循环次数为最短元素长度
for(int i = 0;i < min;i++)
{
if(judg==0)
break;
x = strs[0].charAt(i);
//遍历字符串数组元素,第一个元素到最后一个元素
for(int j = 0;j < strs.length;j++)
{
//只要出现不相同,就结束结束遍历过程
if(strs[j].charAt(i)!=x)
{
judg = 0;
break;
}
}
//只要判断量没变,每次次数便存一个字符
if(judg == 1)
re+=x;
}
return re;
}
}