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:
(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]
(i+1
,str
[i+1])
# 對於像'aaadfaaaaaaaaaa'這樣的串特殊處理最後兩個字元,另外對於這種情況是不是有點問題
else
(i,str
[i])
(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 時,慢的就指向...