LeetCode刷题记录_最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
题解:
用两层循环,第一层循环选定字符串str[0],用substring获得str[0]的各个分字符串,在第二层循环中与其他字符串的substring对比,若不同则返回前一个子串:
class Solution { public String longestCommonPrefix(String[] strs) { int amount = strs.length; if (amount==0) return ""; int len = strs[0].length(); for(int i=1;i<amount;i++){ if(strs[i].length()<len) len=strs[i].length(); } String str=""; for(int i=1;i<=len;i++){ str=strs[0].substring(0,i); for(int j=1;j<amount;j++){ if(!str.equals(strs[j].substring(0,i))) return str.substring(0,i-1); } } return str; } }
注意:1.substring中string的s为小写。
2.对字符串个方法的掌握还是太差了,别人的解法中看到了用str1.indexOf(String str2)求解的,该方法若存在返回[0,str1.length()-str2.length()]的值,不存在返回-1,所以只需从str1.substring(0,str.length())到str1.substring(0,0)判断indexOf的返回值是否为0,若为0则返回字符串,否则str1=str1.substring(0,str1.length()-1)