方法一:
先獲取字串陣列中的最小長度的字串的長度為min(只儲存長度為最小字串長度的字元,節省空間),將字串陣列轉換成多維字元陣列,維度與字串個數一致,字元陣列的每一行代表乙個字串。
然後從字元陣列中的第二行開始與第一行的字元進行比較,即第一行的第乙個與第二行的第乙個進行比較,如此相同則依次比較下去,直到比較全部,比較的次數為min,如果中途出現比較第4個字元時不相等,則下一行與第一行就只需要比較前3個了,因為即使之後的字元還相等,但由於第二行的第4個已經出現了不是共有字首的情況,所以最終最好結果也只會去取前3個字元。
**實現:
public string longestcommonprefix
(string[
] strs)
if(mix ==0)
return"";
// 如果最小比較次數是0,則直接返回
for(
int i =
0; i < strs.length; i++
)for
(int i =
1; i < strs.length; i++)}
}return
newstring
(str_char[0]
).substring(0
,mix)
;}
附上方法一在leetcode中執行結果截圖:
方法二:
由方法一改編,即不儲存進字元陣列中,直接通過擷取字串中特定位置的字元來進行比較,這樣看似節省了**,也不用new出字元陣列的空間,但是每次擷取呼叫的方法:substring()它的原始碼中返回值都是重新 new 出來乙個字串,且原始碼中還額外new了其他類,反而讓記憶體消耗巨大。
substring()原始碼:
public string substring
(int beginindex,
int endindex)
if(endindex > value.length)
int sublen = endindex - beginindex;
if(sublen <0)
return
((beginindex ==0)
&&(endindex == value.length))?
this
:new
string
(value, beginindex, sublen)
;}
**實現:
public string longestcommonprefix
(string[
] strs)
if(mix ==0)
return"";
// 如果最小比較次數是0,則直接返回
for(
int i =
1; i < strs.length; i++)}
}return strs[0]
.substring(0
,mix)
;}
附上方法二在leetcode中執行結果截圖:
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...
split 將字串分割成字串陣列
list name list name.split split 方法用於把乙個字串分割成字串陣列。stringobject.split separator,howmany 引數 描述separator 必需。字串或正規表示式,從該引數指定的地方分割 stringobject。howmany 可選。該...
字串 字串陣列 字元陣列的區別
string a newstring 字串 string a newstring 5 字串陣列 char a newchar 5 字元陣列 string a newstring abc 字串 string a newstring 字串陣列的賦值 string a 字串陣列的初始化 char a ne...