标签:
Time limit: 0.5 second
Memory limit: 64 MB
The blonde Angela has a new whim: internet chats. Of course, as any blonde, shewrites her messages using the upper case. You are the moderator of Angela‘sfavorite chat and you‘re fed up with her upper-case messages. The problemis
that Angela does not respond to your warnings. You decided to write a simpleantiCAPS corrector, which would make Angela‘s messages readable.
The correction rules are very simple:
- Sentences in a message consist of words, spaces and punctuation marks.
- Words consist of English letters.
- Sentences end with a full stop, exclamation mark, or question mark.
- The first word of each sentence must start with a capital letter, and all otherletters of the sentence must be lowercase.
Input
You are given Angela‘s message, which consists of uppercase English letters,spaces, line breaks and punctuation marks: full stops, commas, dashes, colons, exclamationand question marks. Total length of message is not exceeding
10000 symbols.
Output
Output the corrected message.
Sample
input |
output |
HI THERE!
HOW DID YOU KNOW I AM A BLONDE?
|
Hi there!
How did you know i am a blonde?
|
Problem Author: Denis Musin
Problem Source: IX USU Open Personal Contest (March 1, 2008)
解析:注意两点:
1.每个句子以‘.’,‘?’和‘!’结尾。每个句子开头字符都要换成大写。
2.换行不算句子结尾的标志。
以下提供两组测试样例:
input1:
HELLO. I AM ANJELA! AND YOU?
I AM BLONDE.
output1:
Hello. I am anjela! And you?
I am blonde.
input2:
HHHHHHHHHH? SDSDFSDF! SFSDF. SDFAF
HKLLKSDJOI
output2:
Hhhhhhhhhh? Sdsdfsdf! Sfsdf. Sdfaf
hkllksdjoi
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
#ifdef sxk
freopen("in.txt", "r", stdin);
#endif // sxk
string s;
int flag = 1;
while(getline(cin, s)){
int n = s.size();
for(int i=0; i<n; i++){
if(flag){
if(s[i] >= 'A' && s[i] <= 'Z') flag = 0;
}
else{
if(s[i] >= 'A' && s[i] <= 'Z') s[i] += ('a' - 'A');
else if(s[i] == '.' || s[i] == '?' || s[i] == '!') flag = 1;
}
}
cout<<s<<endl;
}
return 0;
}
URAL 1601. AntiCAPS (strings)
标签:
原文地址:http://blog.csdn.net/u013446688/article/details/46620011