zoukankan      html  css  js  c++  java
  • 【模拟】Gym

    让你把所有的“连续的仅有首字母大写的”词组用缩写表示,并且在后面用括号注明原词组。

    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s[130];
    bool iszimu(char c){
    	return ((c>='A' && c<='Z') || (c>='a' && c<='z'));
    }
    bool isbig(char c){
    	return (c>='A' && c<='Z');
    }
    bool issmall(char c){
    	return (c>='a' && c<='z');
    }
    bool check(int l,int r){
    	if(r-l+1==1){
    		return 0;
    	}
    	if(!isbig(s[l])){
    		return 0;
    	}
    	for(int i=l+1;i<=r;++i){
    		if(!issmall(s[i])){
    			return 0;
    		}
    	}
    	return 1;
    }
    void print(int l,int r){
    	for(int i=l;i<=r;++i){
    		putchar(s[i]);
    	}
    }
    void prin2(int l,int r){
    	for(int i=l;i<=r;++i){
    		if(isbig(s[i])){
    			putchar(s[i]);
    		}
    	}
    	printf(" (");
    	for(int i=l;i<=r;++i){
    		putchar(s[i]);
    	}
    	putchar(')');
    }
    int main(){
    	freopen("abbreviation.in","r",stdin);
    	freopen("abbreviation.out","w",stdout);
    	while(gets(s)){
    		int n=strlen(s),sta,cnt=0,end=-1,Sta,End=-1;
    		for(int i=0;i<n;++i){
    			if((i==0 || !iszimu(s[i-1])) && iszimu(s[i])){
    				sta=i;
    			}
    			if((i==n-1 || !iszimu(s[i+1])) && iszimu(s[i])){
    				if(check(sta,i) && (cnt==0 || (end==sta-2 && s[end+1]==' '))){
    					++cnt;
    					if(cnt==1){
    						Sta=sta;
    						End=end;
    					}
    				}
    				else if(check(sta,i)){
    					if(cnt>=2){
    						print(End+1,Sta-1);
    						prin2(Sta,end);
    					}
    					else if(cnt==1){
    						print(End+1,Sta-1);
    						print(Sta,end);
    					}
    					cnt=1;
    					Sta=sta;
    					End=end;
    				}
    				else{
    					if(cnt>=2){
    						print(End+1,Sta-1);
    						prin2(Sta,end);
    					}
    					else if(cnt==1){
    						print(End+1,Sta-1);
    						print(Sta,end);
    					}
    					print(end+1,i);
    					cnt=0;
    				}
    				end=i;
    			}
    		}
    		if(cnt>=2){
    			print(End+1,Sta-1);
    			prin2(Sta,end);
    		}
    		else if(cnt==1){
    			print(End+1,Sta-1);
    			print(Sta,end);
    		}
    		print(end+1,n-1);
    		puts("");
    	}
    	return 0;
    }
  • 相关阅读:
    H5调用本地摄像头
    zepto和jquery的区别,zepto的不同使用8条小结
    web前端页面性能优化小结
    超赞!聊聊WEB APP、HYBRID APP与NATIVE APP的设计差异
    activemq生产者和消费者的双向通信
    消息队列同步和异步机制
    postman使用教程
    spring boot mybatis sql打印到控制台
    spring boot 整合 mybatis 以及原理
    spring 框架整合mybatis的源码分析
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/7163361.html
Copyright © 2011-2022 走看看