题目描述
作为一个程序媛/猿,或许大家都有头被按在键盘上的经历。
边总突然想知道自己的头在键盘上按出来的字母有没有规律,于是他打算统计出被按出来的乱码中每个字母出现的位置。
给出字符串和要查询的字母,问要查询的字母出现过的位置。
输入
多组测试样例
每行为一个不知道有多长的字符串 s ,然后是一个字符表示 c 要查询的字母,中间用空格隔开。
保证字符串中只有小写字母。
输出
输出要查询的字母在字符串中出现过的位置,字符串下标从一开始。
如果要查询的字母不在字符串中,输出 NO
样例输入
asdfghjkls s
abcdef x
样例输出
2 10
NO
# include <iostream>
# include <vector>
# include <string>
using namespace std;
int main()
{
string n;
char m;
while(cin>>n>>m)
{
int flag = 1; //这个语言是为了下面给vector赋值,为了找到字符串的位置。
vector<int> v;
string:: iterator it; //这个迭代器是字符串自己专属的,和别的不一样。特别要点。
for(it = n.begin(); it != n.end(); it++)
{
if(*it == m) //字符串迭代器可以和你想所找的字符相等,相当于字符串从第一个往后遍历,直到找到你想要的那个。
{
v.push_back(flag); //这个给数组往后给值是为了与字符串对应。
}
flag++;
}
if(!v.empty()) //如果遍历动态数组找到这个单位不是空的话,就输出来。
{
vector<int>::iterator l; //重新定义一个迭代器,然后指向对应的。
for(l = v.begin(); l != v.end(); l++)
{
cout<<*l<<" ";
}
}
else
{
cout<<"NO"; //没有自己想要的字符串就输出弄NO。
}
}
return 0;
}