我正在尝试打印字符串中每个字符的第一次出现。
我的代码有效,但是由于某种原因,它没有记录字符串的第一个字符的第一次出现。 我正在为此目的使用地图(不是最理想的方法,但我正在尝试学习如何使用它们)。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
cin.ignore();
while(t--){
string s;
getline(cin, s);
map<char, int> m;
for(int i=0; i<s.size();i++)
if(!m[s[i]])
m[s[i]]=i;
for(auto i: m)
cout<<i.first<<"-"<<i.second<<' ';
cout<<endl;
m.clear();
}
return 0;
}
输入:
2
geeksforgeeks
geeks for geeks
我的输出:
e-1 f-5 g-8 k-3 o-6 r-7 s-4
-5 e-1 f-6 g-10 k-3 o-7 r-8 s-4
预期输出:
e-1 f-5 g-0 k-3 o-6 r-7 s-4
-5 e-1 f-6 g-0 k-3 o-7 r-8 s-4