[蓝桥杯2019初赛]不同子串

题意:一个字符串的非空子串是指字符串中长度至少为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
",ans.size());
24     return 0;
25 }

substr()函数

string s;

s.substr(start,length);

start:字符串的起始位置

            正数:字符串指定位置开始。

            负数:在字符串结尾的指定位置开始。

             0:在字符串的第一个字符处开始。

length:返回字符串的长度,默认是到字符串结尾的位置。

               正数:从规定的起始位置返回。

               负数:字符串结尾末端返回。

返回值:返回字符串的提取部分,失败返回false,或者返回一个空字符串。

原文地址:https://www.cnblogs.com/Edviv/p/12330789.html