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

提示编译错误。但是在本人vc上运行正常,求大神指点。本人不胜感激。#include<fstream>#include<iostream>#include<string>#... 提示编译错误。但是在本人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;
}
展开
 我来答
汪好帅
2011-11-10 · TA获得超过2829个赞
知道大有可为答主
回答量:1177
采纳率:0%
帮助的人:1402万
展开全部
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就是一个测试系统
它也提供什么编译环境?!
吹瞳亦淡04
2011-11-12
知道答主
回答量:20
采纳率:0%
帮助的人:20.4万
展开全部
string类本来就有一个函数可以找子串的,不必自己写呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
porker2008
2011-11-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
踩着你脚印前行
2011-11-10
知道答主
回答量:20
采纳率:0%
帮助的人:8.6万
展开全部
sd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式