SP1163 JAVAC - Java vs C &#43&#43

传送门:SP1163 JAVAC - Java vs C &#43&#43

很明显一字符串模拟题,但是要考虑几个问题,这是翻译没有写的,首先如果 _ 后面还是 _,要输出 Error!;第二,如果字符串末尾或第一个是 _,也要输出 Error!;最后,如果字符串第一个是大写,也要输出 Error!

然后就是模拟了:

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	while (cin >> s)
	{
		if (s[0] == '_' || isupper(s[0]) || s.back() == '_')
		{
			cout << "Error!" << endl;
			continue;
		}
		int len = s.length() - 1;
		string copy = s;
		transform(copy.begin(), copy.end(), copy.begin(), ::tolower);
		int fd = s.find("_");
		string finalans = "";
		if (fd != string::npos && copy != s)
		{
			cout << "Error!\n";
			continue;
		}
		if (fd != string::npos)
		{
			for (int i = 0; i <= len; i++)
			{
				if (s[i] == '_')
				{
					if (isupper(s[i + 1]) || s[i + 1] == '_')
					{
						finalans = "Error!";
						break;
					}
					else
					{
						s[i + 1] = toupper(s[i + 1]);
					}
				}
				else
				{
					finalans += s[i];
				}
			}
		}
		else
		{
			for (int i = 0; i <= len; i++)
			{
				if (isupper(s[i]))
				{
					finalans += "_";
					s[i] = tolower(s[i]);
				}
				finalans += s[i];
			}
		}
		cout << finalans << endl;
	}
	return 0;
}
posted @ 2022-01-13 15:37  HappyBobb  阅读(10)  评论(0)    收藏  举报  来源