演算法 將字串陣列中的字串共有字首輸出

2021-10-14 10:23:31 字數 1785 閱讀 1065

方法一:

​ 先獲取字串陣列中的最小長度的字串的長度為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...