求字串的子串問題有兩類,一種是不連續,一種是連續。
然而這兩種都可以用暴力求解,不過容易 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,且佔據單獨的一行。應該...