齐家装饰公司官网杭州seo博客
链接:
剑指 Offer 50. 第一个只出现一次的字符
题意:
如题
解:
map存下标,由于存在下标0,所以用find,或者记录下标+1也可以
实际代码:
#include<bits/stdc++.h>
using namespace std;
char firstUniqChar(string s)
{map<char,int>mp;for(int i=0;i<s.length();i++){if(mp.find(s[i])==mp.end()){if(mp[s[i]]!=-1) mp[s[i]]=i;}else{mp[s[i]]=-1;}}int index=INT_MAX;for(auto m:mp){//cout<<m.first<<" "<<m.second<<endl;if(m.second!=-1) index=min(index,m.second);}if(index>=s.length()) return ' ';return s[index];
}
int main()
{string s;cin>>s;char ans=firstUniqChar(s);cout<<ans<<endl;return 0;
}
限制:
0 <= s 的长度 <= 50000