poj 水题1936 求指教。给定两个字符串s,t。判断s是不是是t的子序列。(t中字符可删减,但顺序不变)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 水题1936 求指教。给定两个字符串s,t。判断s是不是是t的子序列。(t中字符可删减,但顺序不变)相关的知识,希望对你有一定的参考价值。

提示编译错误。但是在本人vc上运行正常,求大神指点。本人不胜感激。

#include<fstream>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

bool IsSubstring(string s,string t)

char * it;
int i;
int x=s.length();
it=t.begin();
for (i=0; i <x;i++)

it = (find(it ,t.end(),s[i]));
if (it ==t.end())

return false;


return true;

int main(int argc,char **argv)

// fstream cin(argv[1]);
string s,t;

while (cin>>s>>t)

if (IsSubstring(s,t))

cout<<"Yes"<<endl;

else

cout<<"No"<<endl;



// cin.close();
return 0;

it = (find(it ,t.end(),s[i])); //以前没用过这个函数,查了下了解你的想法,你是一个一个逐个对比

但是有个问题存在,那就是。如果s>t
如下情况,程序也会输出yes xihaa xiha
而题意s 是t的子列
我印象中还有find的其他方法,但是我知道一个更直接的一个函数strstr()
#include<fstream>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

bool IsSubstring(string s,string t)


return strstr(t.c_str(),s.c_str());


int main(int argc,char **argv)

// fstream cin(argv[1]);
string s,t;

while (cin>>s>>t)

if (IsSubstring(s,t))

cout<<"Yes"<<endl;

else

cout<<"No"<<endl;



// cin.close();
return 0;
追问

其实算法不是什么滴,我只是想问下,为什么在本机上运行正常,但是在oj上运行就提示编译错误了?

追答

你的程序在我的VC下面也可以编译运行,但是运行结果是不符合要求。
你说的OJ是说你运行结果错误,还是你说的编译通不过?坦白说,我一直以为OJ就是一个测试系统
它也提供什么编译环境?!

参考技术A string类本来就有一个函数可以找子串的,不必自己写呀。 参考技术B #include<fstream>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

bool IsSubstring(string s,string t)

int it;
int i;
int x=s.length();
it=0;
for (i=0; i <x;i++)

it = t.find(s[i],it);
if (it ==string::npos)

return false;

it++;

return true;

int main(int argc,char **argv)

// fstream cin(argv[1]);
string s,t;

while (cin>>s>>t)

if (IsSubstring(s,t))

cout<<"Yes"<<endl;

else

cout<<"No"<<endl;



// cin.close();
return 0;
参考技术C sd

以上是关于poj 水题1936 求指教。给定两个字符串s,t。判断s是不是是t的子序列。(t中字符可删减,但顺序不变)的主要内容,如果未能解决你的问题,请参考以下文章

求poj基础水题!

POJ1936

POJ - 2159 - Ancient Cipher = 水题

POJ2778 DNA Sequence Trie+矩阵乘法

POJ2406 Power Strings

[POJ1936]All in All