1601. AntiCAPS
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; }