3157 Java vs C++模拟
原题:http://poj.org/problem?id=3157
模拟题,需要注意一下地方,我看了discuss才过的,很多地方没想过。其实题目说的也不是很清楚吧。输入输出还弄的乱七八糟的。没有牵涉到什么算法好像也没什么好讲的。注意几个地方:
(1)java没有下划线,c++没有大写字母。
(2)字符串第一个字母都是小写的,大写就Error。
(3)下划线不能出现在末尾,也不能连续出现。
主要就是参考gfedcba 的提示。简单帖下代码。
#include <string> #include <iostream> using namespace std; int main() { string s, a; int temp; while (cin>>s) { temp = 0; for (int i = 0; i < (int)s.length(); i++) { if (s[i] == '_') { if (i == 0 || s[i - 1] == '_' || temp == 2 || i == (int)s.length() - 1) { temp = 3;break; } temp = 1; } if (s[i] >= 'A' && s[i] <= 'Z') { if (i == 0 || temp == 1) { temp = 3;break; } temp = 2; } } if (temp == 3) { cout<<"Error!"<<endl; continue; } switch(temp) { case 0: cout<<s<<endl;break; case 1: for (int i = 0; i < (int)s.length(); i++) { if (i > 0 && s[i - 1] == '_') printf("%c", s[i] - 32); else if (s[i] != '_')cout<<s[i]; } cout<<endl;break; case 2: for (int i = 0; i < (int)s.length(); i++) { if (s[i] >= 'a' && s[i] <= 'z') cout<<s[i]; else { cout<<"_"; printf("%c", s[i] + 32); } } cout<<endl;break; default:break; } } return 0; }