判断字符串A中是否含有另一个字符串B,其中字符串A可以不连续

xuzhaofangxzf 2016-09-10 10:22:30
如果字符串A:abcdefgh,字符串B:abcdg也可以是A的子串,这种情况怎么判断,用C++怎么实现
...全文
1996 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
汐彤映月 2016-11-08
  • 打赏
  • 举报
回复
楼上正解,不考虑顺序的话,需要逐个比对

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString a,b,str;
    a = "Hello,world";
    b = "wor";  //"word"
    str = a + " contains " + b ;
    for(int i=0;i<b.Length();i++)
    {
    	int t = a.Pos(b.SubString(i+1,1));
    	if(t<=0)
    	{
    		str = a + " doesn't contain " + b ;
    		break ;
    	}
  	}
    ShowMessage(str);
}
  • 打赏
  • 举报
回复
按照他的意思abcdg是abcdefgh的子串啊,不考虑顺序就是集合运算,如果考虑顺序的话,需要逐个字符从前向后匹配,首先查找a,如果找到,从a的下一个位置再向后查找b...
ooolinux 2016-09-12
  • 打赏
  • 举报
回复
没看懂,abcd顺序换了还是子串吗?
  • 打赏
  • 举报
回复
“如果字符串A:abcdefgh,字符串B:abcdg也可以是A的子串”这说明只要B中每个字符在A中都有就可以了,可以用集合运算。
ooolinux 2016-09-11
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString a,b;
    a="Hello,world";
    b="wor";  //"word"

    int Pos=a.Pos(b); //为了兼容Delphi,下标从1开始
    ShowMessage(IntToStr(Pos));
    if(Pos>0)
        ShowMessage(a+" contains "+b);
    else
        ShowMessage(a+" doesn't contain "+b);

    char *sub=strstr(a.c_str(),b.c_str());
    ShowMessage(AnsiString(sub));
    if(sub)
        ShowMessage(a+" contains "+b);
    else
        ShowMessage(a+" doesn't contain "+b);
}
内容概要:本文介绍了基于神经网络与无导数优化算法(遗传算法GA和模拟退火SA)对翼型气动性能的升阻比进行优化的研究方法,重点围绕如何利用智能优化算法提升翼型在特定工况下的气动效率展开。通过构建高精度的神经网络代理模型,替代复杂的CFD仿真过程,有效降低了计算成本,并结合遗传算法和模拟退火算法各自的全局搜索与局部优化优势,实现了对翼型外形参数的高效寻优。文详细阐述了算法流程、代理模型训练策略、目标函数设定及约束条件处理方式,最终验证了该方法在提升升阻比方面的有效性与鲁棒性。; 适合人群:具备一定空气动力学基础和MATLAB编程能力,从事航空航天、流体机械或优化设计方向的研究生及科研人员;熟悉智能优化算法但希望将其应用于实际工程问题的工程师。; 使用场景及目标:① 掌握基于代理模型的翼型气动优化框架设计;② 学习将遗传算法与模拟退火算法融合应用于复杂非线性工程问题的方法;③ 实现低计算代价下的高性能翼型设计优化。; 阅读建议:建议读者结合提供的Matlab代码深入理解神经网络建模与优化算法集成的具体实现细节,重点关注数据预处理、模型训练过程与优化迭代逻辑的衔接,并可通过更换翼型参数化方法或引入更多物理约束进一步拓展应用场景。

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧