字符串的包含

给定一个长字符串a和一个短字符串b,判断短字符串b的所有字符串都是否在a中。

分析:

1.可以采用论询的方法。

2.轮询短字符串中的每一个字符,逐个与长字符串a中的字符进行比较

3.查找是否都在a中

代码:

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
bool StringContain(string &a,string &b)
{
for(int i=0;i<b.length();i++)
{
for(int j=0;(j<a.length())&& (a[j]!=b[i]);j++)
;
if(j>=a.length())
return false;


}
return true;
}


void main()
{
string a = "ABCD";
string b = "BGD";
if(StringContain(a,b))
cout<<"contain"<<endl;
else
cout<<"NO contain"<<endl;
}

第二种方法:

1.先进行排序

2.然后进行轮询比较

3.时间复杂度O(m+n),排序时间复杂度为O(mlogm)+O(nlogn)

代码:

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
bool StringContain(string &a,string &b)
{
sort(a.begin(),a.end());
sort(b.begin(),b.end());
for(int pa=0,int pb=0;pb<b.length();)
{
while((pa<a.length()) && (a[pa] <b[pb]))
{
++pa;
}
if((pa>=a.length()) || (a[pa]>b[pb]))
{
return false;
}
++pb;
}
return true;
}


void main()
{
string a="ABCD";
string b="BCD";
if(StringContain(a,b))
{
cout<<"contain"<<endl;
}
else
{
cout<<"No contain"<<endl;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值