題意:一個字符串的非空子串是指字符串中長度至少為1 的連續的一段字符組成的串。
例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 個。
注意在計算時,只算本質不同的串的個數。
請問,字符串0100110001010001 有多少個不同的非空子串?
1 #include <iostream> 2 #include <algorithm> 3 #include <set> 4 #include <cstring> 5 #include <string> 6 #include <stdio.h> 7 #define rep(i,a,b) for(int i=(a);i<=(b);++i) 8 #define per(i,a,b) for(int i=(a);i>=(b);++i) 9 using namespace std; 10 const int N=1e3+7; 11 typedef long long ll; 12 int main() 13 { 14 string s="0100110001010001"; 15 set<string>ans; 16 int len=s.size(); 17 rep(i,0,len-1){ 18 rep(j,0,len-1){ 19 string ss=s.substr(i,j); 20 ans.insert(ss); 21 } 22 } 23 printf("%d\n",ans.size()); 24 return 0; 25 }
substr()函數
string s;
s.substr(start,length);
start:字符串的起始位置
正數:字符串指定位置開始。
負數:在字符串結尾的指定位置開始。
0:在字符串的第一個字符處開始。
length:返回字符串的長度,默認是到字符串結尾的位置。
正數:從規定的起始位置返回。
負數:字符串結尾末端返回。
返回值:返回字符串的提取部分,失敗返回false,或者返回一個空字符串。