賽碼 (基本演算法 難度2)回文串 Python

2021-09-26 19:45:05 字數 2110 閱讀 4996

給定乙個字串,問是否能夠通過新增乙個字母將其變成「回文串」。 「回文串」是指正著和反著讀都一樣的字串。如:」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...