1.编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
2.知识点
注(1)
**substring 是于获取字符串的子串。**substring 方法通常需要指定起始索引和结束索引(不包含结束索引对应的字符),用于提取原始字符串的一部分。
例子1:
String str = "Hello, world!";
String sub = str.substring(7, 12); // 提取从索引7到索引11的子串,即"world"
System.out.println(sub);
注(2)
**indexOf 用于查找字符串中某个子串第一次出现的位置。**如果找到了该子串,则返回其在原始字符串中的起始索引;**如果未找到,则返回 -1。**使用indexOf判断是否是公共前缀
例子2:
String str = "Hello, world!";
int index = str.indexOf("world"); // 查找子串"world"第一次出现的位置
System.out.println(index);
注(3)
i < strs.length:通常用于遍历一个字符串数组 strs。这个条件确保循环变量 i 的值在数组索引范围内,从而避免访问数组越界。
i < s.length():通常用于遍历一个字符串 s。这个条件确保循环变量 i 的值在字符串的长度范围内,从而避免访问字符串越界
String str = "Hello, world!";
int index = str.indexOf("world"); // 查找子串"world"第一次出现的位置
System.out.println(index); // 输出 7
注4:strs.length - 1 是针对数组的长度,用于获取数组的最后一个元素的索引。由于数组的索引从 0 开始,因此最后一个元素的索引是数组长度减去 1。
strs.length() 是针对字符串的长度,用于获取字符串的长度。字符串的索引也是从 0 开始,所以最后一个字符的索引是字符串长度减去 1。
3.代码实现
import java.util.Arrays;
class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length==0){return "";}Arrays.sort(strs);String start=strs[0];String end=strs[strs.length-1];int num=Math.min(start.length(),end.length());int i;for(i=0;i<num&&start.charAt(i)==end.charAt(i);i++);String sub=start.substring(0,i);return sub;}
}