文章目录
一、题目描述
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
二、解题思路
其实就是字符串相关方法的使用,可以先两两的去寻找公共前缀,找到前两个字符串的公共前缀,然后再把这个公共前缀在后一个字符串中去找匹配的。
三、代码编写步骤
第一步:判断边界,就是不存在公共前缀的情况;
1.字符串数组为空;
2.字符串数组长度为0,先声明要先判断是否为空才能判断这个条件。
第二步:声明一个pre来存放字符串数组中的第一个字符串
第三步:将字符串数组中剩下的字符串与pre逐一比较,查找公共前缀。
四、代码演示
class Solution {
public String longestCommonPrefix(String[] strs) {
//判断边界
if(strs == null || strs.length == 0){
return "";
}
//默认第一个字符串是公共前缀
String pre = strs[0];
int i = 1;
while (i < strs.length) {
//不断的截取
//查找pre字符串在str[i]中出现的位置,如果能完全匹配则返回0
while (strs[i].indexOf(pre) != 0)
//subString方法返回[开始,结束)处字符
pre = pre.substring(0, pre.length() - 1);
i++;
}
return pre;
}
}
第4行:判断边界,就是str为空或者长度为0,返回””
第8行:str[0]将字符串数组中的第一个元素”flower”赋值给pre。
第13行:这里i是从1开始的,查找pre字符串在strs[i]这个字符串中出现的位置,如果是完全匹配则返回0,没有完整的匹配返回的是-1。比如我在flower中去找flow返回0,在flow中找flower则返回-1。
第14行:以示例1为例,将flower切片,长度减1,此时pre=flowe,这时再去进行13行的判断,每次flower都减去一个末尾字符去跟flow比较直到找到他们的公共字符串,也就是能完全匹配
的判断,每次flower都减去一个末尾字符去跟flow比较直到找到他们的公共字符串,也就是能完全匹配
第15行:pre=pre.substring(0,pre.length()-1)指示索引位置,[开始,结束)