LeetCode刷題記錄_最長公共前綴
阿新 • • 發佈:2018-07-28
public 掌握 刷題 編寫 npr bsp leet comm mount
編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 ""
。
示例 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)
LeetCode刷題記錄_最長公共前綴