c660 - 墨西哥波浪舞
題目描述
題目要求模擬墨西哥波浪舞的效果,將輸入字串中的每個單字的第一個字母轉換為大寫,並輸出。輸入字串可能包含多個空格,需要處理這些空格。
解題思路
程式首先將輸入字串中的所有大寫字母轉換為小寫字母。然後,迭代字串,跳過空格,將每個單字的第一个字母轉換為大寫,並立即輸出。最後,將該字母轉換回小寫,以便處理下一個單字。
複雜度分析
- 時間複雜度: O(n),其中 n 是輸入字串的長度。程式需要遍歷字串兩次,一次用於轉換大小寫,一次用於模擬波浪舞。
- 空間複雜度: O(1),程式只使用了常數額外的空間。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
string a;
while(getline(cin,a)){
int al=a.length();
for(int i=0;i<al;i++){
if(a[i]>='A'&&a[i]<='Z'){
a[i]+=32;
}
}
for(int i=0;i<al;i++){
while(a[i]==' '){
i++;
}
a[i]-=32;
cout << a << "\n";
a[i]+=32;
}
}
}