搜尋 列舉字串子串問題

2021-07-16 04:24:27 字數 1246 閱讀 4258

求字串的子串問題有兩類,一種是不連續,一種是連續。

然而這兩種都可以用暴力求解,不過容易 time limited exceed;

那可以只用兩個for迴圈就get全部子串嗎?

求不連續的子串:用dfs(深度優先搜尋)

這裡看乙個題 hd 1015 safecracker 

這個題大意就是 在給出的5-12個字元裡面找到字典序最大的子串(不連續),子串字元數目是5個,且子串滿足公式

v - w^2 + x^3 - y^4 + z^5 = target   (target由輸入給出)

這個題要遍歷所有的子串,如果乙個乙個找的話,要用5個for迴圈,如果更多呢?顯然用暴力行不通。

那試試深度優先搜尋(其實是遞迴的思想):

#include #include #include #include #define ma 15

using namespace std;

int len,num[30],bj[30];

char in[ma],ans[ma],t[ma];

int n;

void work(int k)

for(i=0;i

這個題是輸出乙個解,杭電有另乙個題要求輸出多個解,就要在主函式多加乙個for迴圈。有興趣可以練練手。

hd 1016 prime ring problem

求連續的子串:呼叫函式substr

substr函式在標頭檔案#include裡面

要呼叫substr函式,定義字串也要用string 定義。

substr函式:

string  s,j;

j=s.substr(i,j);  //從i的位置開始找長度為j的子串,賦給字串j

杭電有個題可以練練手:hd 1238 substring

題意大概是給定n個字串,找到這n個字串的最長子串(連續),輸出最長子串的長度

上**:

#include#include#include#include#include#define ma 105

using namespace std;

string a[ma];

int main()

if(k==n&&sumsum=aa.size();}}

printf("%d\n",sum);

}return 0;

}

字串子串

定義變數 string this is a test 取字串長度,空格也算 從positon處提取字串,positon從0 開始.也可以認為是提取postion之後字串,不算position處 從position位置處取length長的字串.也可以 echo cut c 1 4,取1 4的字元,1 ...

Python字串搜尋並返回子字串位置

multiple searches of a string for a substring using s.find sub start end text msksaspkepeqlrklfigglsfettdeslrsahfesssygsagrrf search sa start 0 whilet...

問題 A 字串 最長回文子串

輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串中連續出現的字串片段。回文的含義是 正著看和倒著看相同。如abba和yyxyy。在判斷回文時,應該忽略所有標點符號和空格,且忽略大小寫,但輸出應保持原樣 在回文串的首部和尾部不要輸出多餘字元 輸入字串長度不超過5000,且佔據單獨的一行。應該...