POJ: Surprising Strings(map、字符串处理)

来源:互联网 发布:mac同步铃声 编辑:程序博客网 时间:2024/05/25 08:12

题目链接:POJ - 3096

题意:给你一个字符串,任意两个字符组成一个字符对,如果任意相同距离的字符对不存在相同的情况,则说明该字符串是奇异的,现在给出一些字符串让你判断并且以*结束

思路:遍历一遍所有的字符对,并将距离相同的字符对用map映射为1作为判断,用flag标记是否出现相同的字符对,一旦出现则NOT surprising

AC代码

#include<iostream>#include<string>#include<map>#include<cstdio>#include<cstring>using namespace std;char s[101];int main(){    while(scanf("%s",s))    {        if(!strcmp(s,"*")) break;        int flag=1,k=strlen(s);        for(int i=0; i<k-1; i++)        {            map<string,int>m;            for(int j=0; i+j<k; j++)            {                char s1[3];                s1[0]=s[j];                s1[1]=s[i+j+1];             //搜索距离为i的字符对                s1[2]='\0';                if(m.find(s1)==m.end()) m[s1]=1;                else                {                    flag=0;                    break;                }            }            if(flag==0) break;        }        if(flag==1) printf("%s is surprising.\n",s);        else printf("%s is NOT surprising.\n",s);    }    return 0;}
原创粉丝点击