九度_题目1283:第一个只出现一次的字符

来源:互联网 发布:synthesia mac 编辑:程序博客网 时间:2024/06/04 18:38
题目描述:
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
输入:
输入有多组数据
每一组输入一个字符串。
输出:
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
样例输入:
ABACCDEFF
AA
样例输出:
1
-1
#include<iostream>#include<string>using namespace std;int main(){    string str;    while(cin>>str)    {        int flag=0;        for(int i=0;i<str.size();i++)        if(str.find_first_of(str[i])==str.find_last_of(str[i]))        {            cout<<str[i]<<endl;            flag=1;            break;        }        if(!flag)            cout<<-1<<endl;    }    return 0;} /**************************************************************    Problem: 1283    User: hndxztf    Language: C++    Result: Accepted    Time:160 ms    Memory:1520 kb****************************************************************/

//另外一种解法,用到了map,当用到计算字符出现的次数时,map还是挺有优势的,存储的过程直接计算次数

#include<iostream>#include<map>using namespace std;int main(){    string str;    while(cin>>str)    {        map<char,int>mpp;        for(int i=0;i<str.size();i++)            ++mpp[str[i]];        int flag=0;        for(int i=0;i<str.size();i++)        {            if(mpp[str[i]]==1)            {                cout<<str[i]<<endl;                flag=1;                break;            }        }        if(!flag)            cout<<-1<<endl;    }    return 0;} /**************************************************************    Problem: 1283    User: hndxztf    Language: C++    Result: Accepted    Time:170 ms    Memory:1524 kb****************************************************************/


0 0