# String Matching# Conditional Statements

a135 - 12250 - Language Detection

🔗 前往 ZeroJudge 原題

題目描述

題目要求根據輸入的單字判斷其語言種類。如果輸入的單字是 "HELLO", "HOLA", "HALLO", "BONJOUR", "CIAO", 或 "ZDRAVSTVUJTE",則輸出對應的語言名稱(ENGLISH, SPANISH, GERMAN, FRENCH, ITALIAN, RUSSIAN)。如果輸入的單字不在這些列表中,則輸出 "UNKNOWN"。

解題思路

這題的解法非常直接。程式碼使用一個 while 迴圈讀取輸入,直到讀取到 "#" 為止。在迴圈內部,使用一系列的 if-else if 語句來檢查輸入的單字是否與已知的語言單字匹配。如果匹配,則輸出對應的語言名稱。否則,輸出 "UNKNOWN"。

複雜度分析

  • 時間複雜度: O(n) 其中 n 是輸入的行數。因為程式碼需要讀取每一行輸入並進行比較。
  • 空間複雜度: O(1) 程式碼使用的額外空間是固定的,不隨輸入大小而變化。

程式碼

#include <iostream>
#include <string>

using namespace std;

int main(){
	string a;
	int i=0;
	while(cin >> a){
		i++;
		if(a=="#"){
			break;
		}
		else if(a=="HELLO"){
			cout << "Case " << i << ": ENGLISH" << endl; 
		}
		else if(a=="HOLA"){
			cout << "Case " << i << ": SPANISH" << endl;
		}
		else if(a=="HALLO"){
			cout << "Case " << i << ": GERMAN" << endl;
		}
		else if(a=="BONJOUR"){
			cout << "Case " << i << ": FRENCH" << endl;
		}
		else if(a=="CIAO"){
			cout << "Case " << i << ": ITALIAN" << endl;
		}
		else if(a=="ZDRAVSTVUJTE"){
			cout << "Case " << i << ": RUSSIAN" << endl;
		}
		else{
			cout << "Case " << i << ": UNKNOWN" << endl;
		}
	}
	
	
}

Discussion