面試題 05 03 翻轉數字

2021-10-07 14:41:41 字數 1231 閱讀 4145

題目鏈結

給定乙個32位整數 num,你可以將乙個數字從0變為1。請編寫乙個程式,找出你能夠獲得的最長的一串1的長度。

示例 1:

輸入: num = 1775(110111011112)

輸出: 8

示例 2:

輸入: num = 7(01112)

輸出: 4

根據題意,理解下就會發現 我們只需找串中每乙個出現的0的左和右總共有多少連續的1, 然後找出來最大的長度即可。

舉例說明:

輸入: num = 1775(11011101111)

輸出: 8

按0切分後得到的字串陣列split:【11,111,1111】

也就是說

第乙個0前為 split=11 後 split=111 最大長度為6(算上自身0 因為題目要求將0轉化1得到的最大長度)

第二個 0前為 split=11 後 split=1111 最大長度為8

結果 8

class

solution

//十進位制轉換二進位制

string s = integer.

tobinarystring

(num)

; string[

] split = s.

split

("0");

if(split.length ==1)

int max = integer.min_value;

for(

int i =

0; i < split.length; i++

)//0的前後兩串1算上自身的0總共的長度 每次更新長度的最大值

面試題一串英文轉數字

最近看到這麼乙個題目 已知 zero,one,two,three,four,five,six,seven,eight,nine分別對應0,1,2,3,4,5,6,7,8,9,對每一段含有這幾種字串的字串進行轉換,如 輸入 nineeightsevensixfivefourthreetwoonezer...

面試題8 旋轉陣列中最小的數字

題目 把乙個陣列中最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉陣列,該陣列的最小值為1。這樣描述問題的話,就很容易解決了。同樣,我們需要想到解決這個問題的時間複雜度,第一眼看到這個題目的時候,想必第一反應就是從...

面試題 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解法 順序查詢即可,時間複雜度為 利用二分查詢的思想,大部分情況旋轉後陣列最小值左邊數值為最大,利用前後指標的方法找到最小值,此...