# String Matching# Conditional Statements

e683 - 00621 - Secret Research

🔗 前往 ZeroJudge 原題

題目描述

題目要求根據給定的數字字串,判斷實驗結果是正面、負面、失敗還是未完成,並輸出對應的符號。實驗結果的判斷依據是字串是否符合特定的模式。如果無法確定實驗結果,則輸出預設的正面結果符號。

解題思路

此題主要考驗字串處理和條件判斷的能力。程式碼通過一系列的 if-else if-else 語句,檢查輸入字串是否符合題目中定義的四種實驗結果的模式。

  • 正面結果:字串為 "1"、"4" 或 "78"。
  • 負面結果:字串以 "35" 結尾。
  • 實驗失敗:字串以 "94" 結尾,且第一個字元為 "9"。
  • 實驗未完成:字串以 "190" 開頭。 如果字串不符合任何一種模式,則預設輸出正面結果的符號。

複雜度分析

  • 時間複雜度: O(n),其中 n 是輸入字串的長度。因為程式碼需要檢查字串的特定部分,最壞情況下需要遍歷整個字串。
  • 空間複雜度: O(1),程式碼只使用了常數級別的額外空間來儲存變數。

程式碼

#include <iostream>
#include <string>
using namespace std;
int main(){
	int t;
	string a;
	cin >> t;
	while(t--){
		cin >> a;
		int al=a.length();
		if(a=="1"||a=="4"||a=="78")
			cout << "+\n";
		else if(a[al-1]=='5'&&a[al-2]=='3')
			cout << "-\n";
		else if(a[0]=='9'&&a[al-1]=='4')
			cout << "*\n";
		else if(a[0]=='1'&&a[1]=='9'&&a[2]=='0')
			cout << "?\n";
		else
			cout << "+\n";
	}
}

Discussion