这道题是一道字符串题,比较简单一个一个的去遍历,也不会超时。
这道题我们可以针对一个字符串遍历,这个字符串长度要最小,举个例子:abc(字符串S)和abvc(字符串T)。
少的字符串是abc,针对他来进行遍历。我们定义两个变量:i_s(当前要在字符串s里进行查找的位置)与i_t(当前要在字符串s里进行查找的位置)。
注意:i_s和i_t要设初始值为0。
如果S比T长
s[i_s]='a'=t[i_t]。 OK,输出后i_t++; 值得一提的是:如果比较结果是不相等i_s也要增加哦!
如果T比S长
这里举一个例子:atcoer(字符串S)atcoder(字符串T)这时如果还用i_t作为比较对象,那T[6](’a‘)又该怎么办呢?所以,我们要把S作为比较对象啦!直接复制代码再把i_s换成i_t,i_t换成i_s就行啦!
代码
#include<string.h>
#include <iostream>
using namespace std;
string s, t;
int main()
{
cin >> s >> t;
if (s.length() >= t.length())//S比T长
{
for (int i_s = 0,i_t=0; i_s < s.length(); i_s++)
{
if (s[i_s] == t[i_t])
{
cout << i_t+1<<" ";//直接输出
i_t++;//对象改变
}
}
}//T比S长
else
{
for (int i_t = 0, i_s = 0; i_t < t.length(); i_t++)
{
if (t[i_t] == s[i_s])
{
cout << i_t + 1 << " ";//直接输出
i_s++;//对象改变
}
}
}
}