zoukankan      html  css  js  c++  java
  • POJ 3602 Typographical Ligatures

    【题意简述】:题意就是输入一串字符串,问我们有多少种不同的字符,也就是说出现过一次的字符,下次就不记到种数中了,特别的有  ff, fi ,fl ,ffi ,ffl,'',``, 这几个每一个算是一种。

    【分析】:经过题意简述,便好攻克了。

    代码:

    // 196K 0Ms
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    
    char s[1000];
    int count1[1000];
    int ff[7];
    int len;
    
    void solve()
    {
    	int ans = 0;
    	memset(count1,0,sizeof(count1));
    	memset(ff,0,sizeof(ff));
    	for(int i = 0;i<len;i++)
    	{
    		if(s[i] == 'f')
    		{
    			if(s[i+1] == 'f' && (s[i+2] == 'i' || s[i+2]=='l'))
    			{
    				if(s[i+2] == 'i')
    					ff[0]=1;
    				if(s[i+2] == 'l')
    					ff[1]=1;
    				i+=2;
    			}
    			else if(s[i+1]=='f'||s[i+1]=='i'||s[i+1]=='l')
    			{
    				if(s[i+1]=='f')
    					ff[2]=1;
    				if(s[i+1]=='i')
    					ff[3]=1;
    				if(s[i+1]=='l')
    					ff[4]=1;
    				i++;
    			}
    			else
    				count1[s[i]]=1;
    		}
    		else if(s[i]=='`'&&s[i+1]=='`')
    		{
    			ff[5]=1;
    			i++;
    		}
    		else if(s[i]=='''&&s[i+1]==''')
    		{
    			ff[6]=1;
    			i++;
    		}
    		else
    			count1[s[i]]=1;
    	}
    	for(int i = 0;i<=256;i++)
    		if(count1[i]) ans++;
    	for(int i = 0;i<7;i++)
    		if(ff[i]) ans++;
    	cout<<ans<<endl;
    }
    
    int main()
    {
    	char c;
    	len = 0;
    	while(cin>>c)
    	{
    		if(c == EOF) break;
    		
    		if(c == ' '||c == '
    ') continue;
    		s[len++] = c;
    	}
    	solve();
    	return 0;
    }


  • 相关阅读:
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java 泛型(六):泛型
    Java 泛型(五):泛型
    第十六章:垃圾回收(Garbage Collection)相关概念
    Java 泛型(四):泛型
    Java 泛型(三):泛型在继承方面体现与通配符使用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4500701.html
Copyright © 2011-2022 走看看