騰訊微信後端實習面試題 去除駝峰字串

2021-10-04 15:29:33 字數 2370 閱讀 7859

str

='aaadfaaaaaaaaab'

len=

len(

str)

print

("%s字串長度:"

%str

,len

)i =

0while i <

len-2:

# 遇到駝峰if(

str[i]

==str

[i+2

]and

str[i]

!=str

[i+1

]and

str[i]

.isupper())

: j = i +

2 i +=

1# 如果沒有駝峰並且不是之前識別駝峰的最後乙個字母就列印

elif i != j:

print

(i,str

[i], end=

' '

) i +=

1print

(i)if i ==

len-2:

# 對於像'aaadfaaaaaaaaa'這樣的串處理最後兩個字元不要列印if(

str[i+1]

==str

[i-1

]and

str[i]

!=str

[i+1

]and

str[i+1]

.isupper())

:pass

# 對於像"aaadfaaaaaaaab"、"aaadfaaaaaaaaab"這樣的串特殊處理最後兩個字元

else

:print

(i,str

[i])

print

(i+1

,str

[i+1

])

除錯結果如下:

("字串長度:"

,len

)i =

0while i <

len-2:

# 遇到駝峰if(

str[i]

==str

[i+2

]and

str[i]

!=str

[i+1])

: j = i +

2 i +=

1# 如果沒有駝峰並且不是之前識別駝峰的最後乙個字母就列印

elif i != j:

print

(i,str

[i], end=

' '

) i +=

1print

(i)if i ==

len-2:

# 對於像'aaadfaaaaaaaaa'這樣的串處理最後兩個字元不要列印if(

str[i+1]

==str

[i-1

]and

str[i]

!=str

[i+1])

:pass

# 對於像"aaadfaaaaaaaaab"這樣的字串特殊處理最後乙個字元

elif

(str

[i]==

str[i-2]

andstr

[i]!=

str[i-1]

):print

(i+1

,str

[i+1])

# 對於像'aaadfaaaaaaaaaa'這樣的串特殊處理最後兩個字元,另外對於這種情況是不是有點問題

else

:print

(i,str

[i])

print

(i+1

,str

[i+1

])除錯結果如下:

總結:其實這個演算法的核心就是while迴圈部分:其中j的作用很巧妙,配合i的增加做到了對每個駝峰串的識別

騰訊暑假實習面試題

題目 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 該題目可以先將字串s倒序然後求倒序字串與原來字串的最長公共子串行 動態規劃 dp i j 表示的是str1 0.i 與 str2 0.j 的最長公共子串行的長度 其餘的...

騰訊2012實習生招聘面試題(部分)

題目 選擇題 在如下8 6的矩陣中,請計算從a移動到b一共有多少走法?要求每次只能向上或向右移動一格,並且不能經過p。bpa a 492 b 494 c 496 d 498 解答 這是有關組合數學中排列組合的一道題。從n個元素中任取r個元素一組,若不考慮它們的順序時,則稱為從n中取r的組合,它的方案...

2012騰訊暑期實習面試題 尋找鍊錶中間結點

最簡單的想法 先遍歷鍊錶統計結點個數,然後結點數 2就是中間結點的位置,再遍歷就可以指向中間結點 如果只能遍歷一次呢?優化演算法 設定兩個指向第乙個結點的指標,乙個 p 一次走乙個,乙個 q 一次走兩個。當走的快的到達鍊錶尾部 q next null q next next null 時,慢的就指向...