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;
}
浙公网安备 33010602011771号