給定乙個字串,問是否能夠通過新增乙個字母將其變成「回文串」。 「回文串」是指正著和反著讀都一樣的字串。如:」aa」,」bob」,」testset」是回文串,」alice」,」time」都不是回文串。
一行乙個有小寫字母構成的字串,字串長度不超過10。
如果輸入字串可以通過新增乙個字元,則輸出」yes」,否則輸出」no」。
coco
yes
# 回文串
# 判斷字串是否為回文字串
# 依次判斷頭尾字元是否相同
s =input()
length =
len(s)
left =
0right = length-
1while left<=right:
if s[left]
==s[right]
: left +=
1 right -=
1else
:break
if left>right:
print
('yes'
)else
:print
('no'
)
# 使用函式(字串翻轉後比較)
def reverse
(str)
:return str[::
-1]def palindrome
(str)
:return str ==
reverse
(str)
s =input()
ifpalindrome
(s):
print
('yes'
)else
:print
('no'
)
查了查別人的思路,是通過判斷刪除乙個字串之後是否是回文串,來判斷能否通過新增乙個字元使之成為回文串
遍歷刪除,讓後判斷,遇true返回,否則返回false
s =
input()
def reverse
(str)
:return str[::
-1]def palindrome
(str)
:return str ==
reverse
(str)
def ispalindrome
(str)
:for i in
range
(len
(str)):
# print
(str[i+1]
) # if i<
len(str)
: s2 = str[
0:i]
+str[i+1:
] # else
: # s2 = str[0:
-1]print
(s2)
ifpalindrome
(s2)
:return true
return false
ifispalindrome
(s):
print
('yes'
)else
:print
('no'
)
# 字串轉為列表:
# 單字元列表:
s ='abcde'
l =list
(s)# 指定字元分割
s ='hello world'
l = s.
split
(' '
)# 列表轉字串
s =' '
.join
(l)
# 輸出為空
s ='vgdfjghfjg'
print
(s[len
(s):
])
賽碼 (基本演算法 難度1)約會 Python
bob和alice有個約會,一大早bob就從點 0,0 出發,前往約會地點 a,b bob沒有一點方向感,因此他每次都隨機的向上下左右四個方向走一步。簡而言之,如果bob當前在 x,y 那麼下一步他有可能到達 x 1,y x 1,y x,y 1 x,y 1 很顯然,當他到達目的地的時候,已經很晚了,...
hdu3068回文串Manacher演算法
題目就是求乙個串的最大回文子串的字元個數。manacher 演算法先貼乙個模板。好短啊。話說此題字尾陣列可能會超時的。發現這個模板有點問題,在此更正一下。更正後 include includeusing namespace std const int n 300010 int n,p n char ...
演算法筆記 codeup 5901 回文串
讀入一串字元,判斷是否是回文串。回文串 是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。一行字串,長度不超過255。如果是回文串,輸出 yes 否則輸出 no 12321 yes include include includeint main if i count 2...