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;
}
posted @ 2011-02-16 23:37  like@neu  阅读(254)  评论(0编辑  收藏  举报