如果字串A:abcdefgh,字串B:abcdg也可以是A的子串,這種情況怎么判斷,用C++怎么實作
uj5u.com熱心網友回復:
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);
}
uj5u.com熱心網友回復:
“如果字串A:abcdefgh,字串B:abcdg也可以是A的子串”這說明只要B中每個字符在A中都有就可以了,可以用集合運算。uj5u.com熱心網友回復:
沒看懂,abcd順序換了還是子串嗎?uj5u.com熱心網友回復:
按照他的意思abcdg是abcdefgh的子串啊,不考慮順序就是集合運算,如果考慮順序的話,需要逐個字符從前向后匹配,首先查找a,如果找到,從a的下一個位置再向后查找b...uj5u.com熱心網友回復:
樓上正解,不考慮順序的話,需要逐個比對
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69136.html
標籤:基礎類
上一篇:怎么寫個簡單的登錄界面代碼啊
下一篇:C++ 一篇搞懂多型的實作原理
