輸入n+1行,第一行為整數n(大於等於1),表示測試資料的組數,後面n行僅由小寫字母組成的字串。現在請找出乙個位置,刪掉那個字母之後,字串變成回文。請放心總會有乙個合法的解。如果給定的字串已經是乙個回文串,那麼輸出-1。
根據題目不考慮刪除元素後不是回文串的情況。
1.判斷字串是否是回文,是列印-1,不是就繼續
2.迴圈刪除字串的乙個元素,刪除後的新字串如果是回文就列印刪除的索引值,並跳出迴圈;如果不是回文就繼續
# -*- coding:utf-8 -*-
defispalindrome
(str):
str1 =
str[::
-1]if
str== str1:
return
true
else
:return
false
defstr_remove
(str
, idx)
: tmplist =
list
(str
) tmplist.pop(idx)
return
"".join(tmplist)
num =
int(
input()
)a =
for i in
range
(num)
:input()
)for x in a:
if ispalindrome(x)
:print
("-1"
)else
:for i in
range
(len
(x))
: xnew = str_remove(x, i)
if ispalindrome(xnew)
:print
(i)break
else
:continue
python可變引數練習
下面的練習參考了 coding utf8 可變引數練習 args是表示乙個不定長的序列 kwargs表示一組不定長度k v的pair def test1 first,args,kwargs print required argument first for v in args print optio...
練習三十 Python回文數判斷程式設計練習。
方法一 1 num input 輸入乙個數 2 results 是回文數 不是回文數 輸入的不是數字 3 result 4if num.isdigit 5 num str num 6for i in range len num 2 7if num i num len num i 1 8continu...
基礎練習 特殊回文數 python
在做這道題時,我的 注釋部分 一直超時。後來我算了一下我的時間複雜度,雖然我只用了一層迴圈,也就是o n 但是它迴圈了1000000 10001 989999次。後來我突然想到它是回文數,最大也就六位還是兩邊對稱的情況,我可以把每一位拆開看每一位可能的數字只有10個,排列前半部分即使有三層迴圈,但也...