PAT乙級(jí)1003-Python

1003 我要通過(guò)! (20 分)

注意:代碼滿分通過(guò)

“答案正確”是自動(dòng)判題系統(tǒng)給出的最令人歡喜的回復(fù)。本題屬于 PAT 的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件匙铡,系統(tǒng)就輸出“答案正確”撵摆,否則輸出“答案錯(cuò)誤”
得到“答案正確”的條件是:
1.字符串中必須僅有 P莉撇、 A呢蛤、T這三種字符,不可以包含其它字符棍郎;
2.任意形如 xPATx 的字符串都可以獲得“答案正確”其障,其中 x 或者是空字符串,或者是僅由字母 A 組成的字符串涂佃;
3.如果 aPbTc 是正確的励翼,那么 aPbATca 也是正確的,其中 a辜荠、 b汽抚、 c 均或者是空字符串,或者是僅由字母 A 組成的字符串侨拦。

輸入格式:

每個(gè)測(cè)試輸入包含 1 個(gè)測(cè)試用例殊橙。第 1 行給出一個(gè)正整數(shù) n (<10),是需要檢測(cè)的字符串個(gè)數(shù)。接下來(lái)每個(gè)字符串占一行膨蛮,字符串長(zhǎng)度不超過(guò) 100叠纹,且不包含空格。

輸出格式:

每個(gè)字符串的檢測(cè)結(jié)果占一行敞葛,如果該字符串可以獲得“答案正確”誉察,則輸出 YES,否則輸出 NO惹谐。

輸入樣例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

輸出樣例:

YES
YES
YES
YES
NO
NO
NO
NO

思路:

1.P必須在T的前面
2.P和T之間必須有字符持偏,且一定包含A
3.P與T之間的字符串長(zhǎng)度影響P和T兩側(cè)的字符串長(zhǎng)度。P與T之間的字符串長(zhǎng)度*P左側(cè)字符串的長(zhǎng)度=P右側(cè)字符串的長(zhǎng)度

代碼:

def isValid(s):
    x = -1
    y = -1
    for i in range(len(s)):  # 找到P和T的最靠后面的位置
        if s[i] == 'P':
            x = i
        if s[i] == 'T':
            y = i
    if x == -1 or y == -1:  # 如果找不到P或者T則返回False
        return False
    else:
        if x > y:  # P在T的后面氨肌,返回False
            return False
        else:      # P在T前面
            if y == x + 1:  # P鸿秆,T之間沒有字符,返回False
                return False
            else:           # P怎囚,T之間有字符
                if x != 0:  # 字符串不以P開頭
                    b = s[0:x]
                else:       # 字符串以P開頭
                    b = []
                c = s[(x + 1):y]
                if y != len(s) - 1:  # 字符串不以T結(jié)尾
                    d = s[(y + 1):len(s)]
                else:                # 字符串以T結(jié)尾
                    d = []
                # 判斷各個(gè)分段是否是字符A組成
                for i in b:
                    if i != 'A':
                        return False
                for i in c:
                    if i != 'A':
                        return False
                for i in d:
                    if i != 'A':
                        return False
                # 條件判斷
                if d == b * len(c):
                    return True
                else:
                    return False
def main():
    n = int(input())
    line = ''
    while n:
        line = input()
        if isValid(line):
            print("YES")
        else:
            print("NO")
        n -= 1
if __name__ == "__main__":
    main()

運(yùn)行結(jié)果:

運(yùn)行截圖

總結(jié)

覺得這道題非常復(fù)雜卿叽,總是漏情況,仔細(xì)審題恳守,并尋找規(guī)律考婴,計(jì)算機(jī)學(xué)科是一個(gè)需要尋找規(guī)律的學(xué)科。

正則表達(dá)式

import re

n = int(input())
for i in range(n):
    line = input()
    if re.match(r'A*PA+TA*', line):    # 在字符串中進(jìn)行匹配
        a = re.split(r'[P|T]', line)   # 以字符P,T進(jìn)行分段
        if a[0] * len(a[1]) == a[2]:   # 條件判斷
            print('YES')
        else:
            print('NO')
    else:
        print('NO')

以上代碼為參考別人所寫催烘,并非CV沥阱,我還自己學(xué)習(xí)了正則表達(dá)式相關(guān)的知識(shí)。正則表達(dá)式學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伊群,一起剝皮案震驚了整個(gè)濱河市考杉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舰始,老刑警劉巖奔则,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔽午,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)酬蹋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門及老,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人范抓,你說(shuō)我怎么就攤上這事骄恶。” “怎么了匕垫?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵僧鲁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)寞秃,這世上最難降的妖魔是什么斟叼? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮春寿,結(jié)果婚禮上朗涩,老公的妹妹穿的比我還像新娘。我一直安慰自己绑改,他們只是感情好谢床,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厘线,像睡著了一般识腿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上造壮,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天渡讼,我揣著相機(jī)與錄音,去河邊找鬼费薄。 笑死硝全,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楞抡。 我是一名探鬼主播伟众,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼召廷!你這毒婦竟也來(lái)了凳厢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤竞慢,失蹤者是張志新(化名)和其女友劉穎先紫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筹煮,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遮精,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了败潦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本冲。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劫扒,靈堂內(nèi)的尸體忽然破棺而出檬洞,到底是詐尸還是另有隱情,我是刑警寧澤沟饥,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布添怔,位于F島的核電站湾戳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏广料。R本人自食惡果不足惜砾脑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望性昭。 院中可真熱鬧拦止,春花似錦、人聲如沸糜颠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)其兴。三九已至顶瞒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間元旬,已是汗流浹背榴徐。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匀归,地道東北人坑资。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像穆端,于是被迫代替她去往敵國(guó)和親袱贮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容