最近嘗試下大家口口相傳的神器 leetcode-cn.com,大家自己註冊就可以選擇題庫進行使用了。我都會先自己出乙個答案,然後再學習別人的標準答案,進行自我提公升。
我直接把相關注釋再**體現出來
public
static
void
main
(string[
] args)
; system.out.
println
("結果:"
+longestcommonprefix
(strs));
}public
static string longestcommonprefix
(string[
] strs)
//遍歷陣列
for(string str : strs)
else
//防止出現間隔相同這種情況,如: abc ,adc這種。
else
if(ca[i]
== cb[i]
&& a.
length()
== i)
else
}//賦值
簡單介紹一下
水平掃瞄法,就是我上面寫的
分治法先遍歷前半部分,後遍歷後半部分
* 分治法(先遍歷前半部分,後遍歷後半部分)
*/public
static string longestcommonprefix2
(string[
] strs)
//用來作為返回公綴使用
//陣列數量不固定,也沒有next方法,只能與上乙個進行比較
//陣列前半部分的結果
string last =
commonprefix
(strs,
0, strs.length /2)
;if(last.
equals(""
))//陣列後半部分的結果
string next =
commonprefix
(strs, strs.length /
2, strs.length -1)
;//兩個結果比較
return
commonprefix
(new
string
,0,1
);}public
static string commonprefix
(string[
] strs,
int begin,
int end)
//防止出現間隔相同這種情況,如: abc ,adc這種。
else
if(ca[i]
== cb[i]
&& common.
length()
== i)
else
}//賦值
last = common.
tostring()
;}return last;
}
二分法
找到最短的字串,分為兩個字串,分別與所有字段比較
/**
* 二分法官方(找到最短的字串,分為兩個字串,分別與所有字段比較)
*/public
static string longestcommonprefix4
(string[
] strs)
int minlength = integer.max_value;
for(string str : strs)
int low =
0, high = minlength;
while
(low < high)
else
}return strs[0]
.substring(0
, low);}
public
static
boolean
iscommonprefix
(string[
] strs,
int length)}}
return
true
;}
leetcode刷題第5題 最長公共字首
題目 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 思路 先求出字串中的最小串,再通過找出第一次出現次數不滿的位置,輸出子串就可以了,熟悉字串的一些基本函式,例如子串提取。注意 strs.size 是指vector向量的大小,strs 0 size 是指數組第乙個元素 ...
LeetCode刷題之14 最長公共字首
我不知道將去向何方,但我已在路上!示例1 輸入 flower flow flight 輸出 fl 示例2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution def longestcommonprefix self,strs list str str ...
Leetcode刷題指南 最長公共字首 14
2 思路 3 要求 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 樣例 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。若有公共字首,則陣列中第乙個字串一定也有部分字元為公...