码迷,mamicode.com
首页 > 编程语言 > 详细

poj 3157 Java vs C++ 模拟

时间:2015-01-07 16:55:35      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:poj   算法   

题意:

将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++ 模拟

标签:poj   算法   

原文地址:http://blog.csdn.net/sepnine/article/details/42494433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!