PAT-B 1003 我要通過!【規律+字串】
PAT-B 1003 我要通過!
https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192
題目
“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。得到“答案正確”的條件是:1、字串中必須僅有 P
、 A
、 T
這三種字元,不可以包含其它字元;2、任意形如 xPATx
的字串都可以獲得“答案正確”,其中 x
或者是空字串,或者是僅由字母 A
組成的字串;3、如果 aPbTc
是正確的,那麼 aPbATca
也是正確的,其中 a
、 b
、 c
均或者是空字串,或者是僅由字母 A
組成的字串。現在就請你為 PAT 寫一個自動裁判程式,判定哪些字串是可以獲得“答案正確”的。
輸入
每個測試輸入包含 1 個測試用例。第 1 行給出一個正整數 n (<10),是需要檢測的字串個數。接下來每個字串佔一行,字串長度不超過 100,且不包含空格。
輸出
每個字串的檢測結果佔一行,如果該字串可以獲得“答案正確”,則輸出 YES
,否則輸出 NO
。
樣例輸入
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
樣例輸出
YES
YES
YES
YES
NO
NO
NO
NO
分析
條件一,字串僅由'P'、'A'、'T'三個字元組成,如果有其他字元,則不合法,統計'P'、'A'、'T'三個字元的數量,且要都大於0。條件二,xPATx合法,說明”PAT“兩邊出現等數量的字元'A'合法。條件三,如果aPbTc合法,那麼aPbATca合法,首先考慮什麼時候aPbTc合法,由條件二知道,xPATx才合法,因此可知a=x 、b=A、c=x,所以條件三說的是
xPATx
xPAATxx
xPAAATxxx
xPAAAATxxxx
......
這些字串合法。
可以發現P前面的A的數量A1、P和T之間的A的數量A2、T之後A的數量A3,滿足
A1*A2=A3
C++程式
#include<iostream>
#include<algorithm>
using namespace std;
bool right(string s)
{
int num_P=0,num_T=0,num_A=0,pos_P=-1,pos_T=-1;
for(int i=0;i<s.length();i++)
{
if(s[i]=='P')
{
num_P++;
pos_P=i;//記錄字元'P'的位置
}
else if(s[i]=='T')
{
num_T++;
pos_T=i;//記錄字元'T'的位置
}
else if(s[i]=='A')
{
num_A++;
}
else
return false;
}
if(num_P!=1||num_A==0||num_T!=1)
return false;
int A1=pos_P,A2=pos_T-pos_P-1,A3=s.length()-pos_T-1;
if(A1*A2==A3)
return true;
return false;
}
int main()
{
int n;
string s;
cin>>n;
while(n--)
{
cin>>s;
if(right(s))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
相關文章
- 浙大PAT刷題-1003.我要透過!!!
- day01-字串方法-邏輯運算子規律字串
- 字串abcde我要輸出字串de?字串
- EMS單號規律與順豐單號規律(C#)C#
- PAT-B 1048 數字加密【字串】加密字串
- PAT-B 1078 字串壓縮與解壓【字串】字串
- A Multiplication Game (博弈,規律)GAM
- 打表找規律
- PAT-B 1093 字串A+B 【集合】字串
- PAT-B 1029 舊鍵盤【字串】字串
- PAT-B 1031 查驗身份證 【字串】字串
- PAT-B 1033 舊鍵盤打字【字串】字串
- PAT-B 1009 說反話【字串】字串
- 通過字串動態建立類物件字串物件
- 軟體行業的發展要尊重軟體工程的價值規律 (轉)行業軟體工程
- HDU 6298 Maximum Multiple(找規律)
- HDU 4951 Multiplication table(找規律)
- leedcode-單詞規律
- 圖片跨域規律探尋跨域
- LeetCode-單詞規律LeetCode
- 索引的應用規律總結索引
- Java欄位初始化規律Java
- FME中通過HTMLExtractor向HTML要資料HTML
- Linux 通過命令列解析JSON字串Linux命令列JSON字串
- PAT-B 1024 科學計數法【模擬+字串】字串
- PAT-B 1066 影象過濾【陣列】陣列
- 通過 find 命令找到你要找的東西
- 軟體開發的21條規律
- LeetCode-290-單詞規律LeetCode
- votedisk在ASM diskgroup上的存放規律ASM
- 通過白名單iptables限制ip規避漏洞
- Python裡的引用與拷貝規律Python
- python3 中 and 和 or 運算規律Python
- 事理圖譜:事件演化的規律和模式事件模式
- 顧森——《追逐語言的規律》(視訊)
- 一個80後總結就業規律就業
- Shareaholic:社交分享和閱讀的規律
- log_buffer的記憶體分配規律記憶體