# String Manipulation# Basic I/O

c760 - 蝸牛老師的點名單 (懶憜篇)

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取一行包含多個以空白分隔的學生名字,並將每個名字的首字母轉換為大寫後單獨輸出。輸入的名字都是小寫字母組成。

解題思路

這題的解題思路非常簡單,主要分為以下幾個步驟:

  1. 讀取輸入的字串。
  2. 遍歷字串中的每個名字,以空白作為分隔符。
  3. 對每個名字,將其第一個字元轉換為大寫。
  4. 輸出轉換後的字串。

程式碼中,a[0]-=32; 的作用就是將小寫字母轉換為大寫字母。ASCII 碼中,大寫字母和對應的小寫字母相差 32。

複雜度分析

  • 時間複雜度: O(n*m),其中 n 是名字的數量,m 是每個名字的平均長度。
  • 空間複雜度: O(m),其中 m 是最長名字的長度,用於儲存轉換後的字串。

程式碼

#include <iostream>
#include <string>
using namespace std;
int main(){
	string a;
	while(cin >> a){
		a[0]-=32;
		cout << a << endl;
	}
}

Discussion