首页 > 代码库 > poj 3157 Java vs C++ 模拟

poj 3157 Java vs C++ 模拟

题意:

将java和c++中的变量名相互转换,比如:long_and_mnemonic_identifier装换为longAndMnemonicIdentifier。

思路:

直接模拟遍历替换,陷阱很多。。

代码:

//poj 3157
//sep9
#include <iostream>
using namespace std;
char s[256],ans[256];

void deal()
{
	int i,j;
	int style1=0,style2=0;
	for(i=0;s[i]!='\0';++i)
		if(s[i]=='_')
			style1=1;
		else if('A'<=s[i]&&s[i]<='Z')
			style2=1;
	if(style1+style2==2){
		printf("Error!\n");
		return;
	}
	for(i=0,j=0;s[i]!='\0';)
		if('a'<=s[i]&&s[i]<='z')
			ans[j++]=s[i++];			
		else if(s[i]=='_'){
			if(s[i+1]=='\0'||i==0||s[i+1]=='_'){
				printf("Error!\n");
				return ;
			}
			else{
				++i;
				ans[j++]=s[i++]-'a'+'A';
			}
		}else if('A'<=s[i]&&s[i]<='Z'){
			if(j==0){
				printf("Error!\n");
				return ;
			}
			ans[j++]='_';
			ans[j++]=s[i++]-'A'+'a';	
		}else{
			printf("Error!\n");
			return ;
		}
	ans[j]='\0';
	printf("%s\n",ans);		
}

int main()
{
	while(scanf("%s",&s)==1)
		deal();
	return 0;	
} 


poj 3157 Java vs C++ 模拟