找到B字符串在A字符串中出现的所有位置的集合
2017-08-24 20:07
218 查看
有一种话,叫做废话,我就不说了,虽然这句也是。直接上题:
在A字符串中查找到出现B字符串的所有位置的集合。例如,A字符串“ABCDDDBC”;B字符串“ABC”,那么对应的输出为123,128,178
这道题可能可以使用动态规划吧,我不太会,还是笨办法,循环。
void Print(string &st1,string &st2,vector<int> &ve,
int st1_i,int st2_i,int ve_i)
{
if(ve_i == st2.size())
{
for(int i = 0; i < ve_i; ++i)
cout<<ve[i]<<" ";
cout<<endl;
return ;
}
for(int i = st1_i; i < st1.size(); ++i)
{
for(int j = st2_i; j < st2.size(); ++j)
{
if(st1[i] == st2[j])
{
ve[ve_i] = i+1;
st1_i = i;
st2_i = j;
Print(st1,st2,ve,i+1,j+1,ve_i+1);
}
}
}
}
void Print(string &st1,string &st2)
{
if(st1.size() <= 0 || st2.size() <= 0)
return;
vector<int> ve;
int len = st2.size();
ve.resize(len);
Print(st1,st2,ve,0,0,0);
}
在A字符串中查找到出现B字符串的所有位置的集合。例如,A字符串“ABCDDDBC”;B字符串“ABC”,那么对应的输出为123,128,178
这道题可能可以使用动态规划吧,我不太会,还是笨办法,循环。
void Print(string &st1,string &st2,vector<int> &ve,
int st1_i,int st2_i,int ve_i)
{
if(ve_i == st2.size())
{
for(int i = 0; i < ve_i; ++i)
cout<<ve[i]<<" ";
cout<<endl;
return ;
}
for(int i = st1_i; i < st1.size(); ++i)
{
for(int j = st2_i; j < st2.size(); ++j)
{
if(st1[i] == st2[j])
{
ve[ve_i] = i+1;
st1_i = i;
st2_i = j;
Print(st1,st2,ve,i+1,j+1,ve_i+1);
}
}
}
}
void Print(string &st1,string &st2)
{
if(st1.size() <= 0 || st2.size() <= 0)
return;
vector<int> ve;
int len = st2.size();
ve.resize(len);
Print(st1,st2,ve,0,0,0);
}
相关文章推荐
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 编写算法,求所有包含字符串S中而不包含字符串T中的字符串,构成的新串r以及r中每一个字符在S中第一次出现的位置
- 每天一道LeetCode-----给定字符串s和字符数组words,在s中找到words出现的位置,words内部字符串顺序无要求
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 函数在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符,函数原型:char *find_char( char const *source, char const *chars);
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 获取特定字符串在 字符串中出现的所有位置
- 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- php 中查找某个字符在字符串中出现的所有位置
- C# 3.0 Cookbook:一、字符与字符串处理(3):在一个字符串内寻找另一个字符串出现的所有位置
- 《剑指offer》-找到字符串中第一个只出现一次的字符,并返回它的位置
- 编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 请编写一个函数,它在一个字符串中进行搜索,查找所有 在一个给定字符集合中出现的字符。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串中找到第一个只出现一次的字符