自己的解法
自己的解法就是先找出長度最短的字符串埠忘,然后以這個字符串為基準,去遍歷其它字符串名船,看大家的前幾位是否是相同的旨怠,遇到有不相同的直接返回,效率賊低运吓。
class?Solution?{
????public?String?longestCommonPrefix(String[]?strs)?{
????????if?(strs.length?==?0)?{
????????????return?"";
????????}
????????if?(strs.length?==?1)?{
????????????return?strs[0];
????????}
????????String?shortStr?=?strs[0];
????????for?(int?i?=?1;?i?<?strs.length;?i++)?{
????????????if?(strs[i].length()?<?shortStr.length())?{
????????????????shortStr?=?strs[i];
????????????}????????????
????????}
????????StringBuffer?res?=?new?StringBuffer("");
????????for?(int?j?=?0;?j?<?shortStr.length();?j++)?{
????????????String?a?=?shortStr.substring(j,?j?+?1);
????????????for?(int?n?=?0;?n?<?strs.length;?n++)?{
????????????????String?b?=?strs[n].substring(j,?j?+?1);
????????????????if?(!a.equals(b))?{
????????????????????return?String.valueOf(res);????????
????????????????}????????????
????????????}
????????????res.append(a);????????????
????????}
????????return?String.valueOf(res);?????????
????}
}
進階解法
思路是拘哨,每次比較倦青,兩個字符串得出它們最長公共前綴,然后拿這個最長公共前綴去和其它字符串進行比較产镐,直到和最后一個字符串比較完就可以了,期間每次比較都已經(jīng)是拿之前字符串相同的部分在比較了丑掺,相對減少了比較次數(shù)述雾。字符串獲取第幾個字符可以直接用charAt。
class?Solution?{
????public?String?longestCommonPrefix(String[]?strs)?{
????????if(strs.length?==?0)?
????????????return?"";
????????String?ans?=?strs[0];
????????for(int?i?=1;i<strs.length;i++)?{
????????????int?j=0;
????????????for(;j<ans.length()?&&?j?<?strs[i].length();j++)?{
????????????????if(ans.charAt(j)?!=?strs[i].charAt(j))
????????????????????break;
????????????}
????????????ans?=?ans.substring(0,?j);
????????????if(ans.equals(""))
????????????????return?ans;
????????}
????????return?ans;
????}
}