solution.md 986 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5
# 不同子串

**题目描述**

一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。  
每日一练社区's avatar
每日一练社区 已提交
6

每日一练社区's avatar
每日一练社区 已提交
7
例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。  
每日一练社区's avatar
每日一练社区 已提交
8

每日一练社区's avatar
每日一练社区 已提交
9
注意在计算时,只算本质不同的串的个数。  
每日一练社区's avatar
每日一练社区 已提交
10 11

请问,字符串`0100110001010001`有多少个不同的非空子串?
每日一练社区's avatar
每日一练社区 已提交
12 13 14

以下程序实现了这一功能,请你补全空白处的内容:

每日一练社区's avatar
每日一练社区 已提交
15
```c
每日一练社区's avatar
每日一练社区 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#include <bits/stdc++.h>
using namespace std;

int main()
{
    set<string> s;
    string str;
    cin >> str;
    for (int i = 0; i < str.size(); i++)
        for (int j = i; j < str.size(); j++)
            __________________
    cout << s.size();
    return 0;
}
```


## aop
### before
每日一练社区's avatar
每日一练社区 已提交
35

每日一练社区's avatar
每日一练社区 已提交
36
```c
每日一练社区's avatar
每日一练社区 已提交
37 38

```
每日一练社区's avatar
每日一练社区 已提交
39

每日一练社区's avatar
每日一练社区 已提交
40
### after
每日一练社区's avatar
每日一练社区 已提交
41

每日一练社区's avatar
每日一练社区 已提交
42
```c
每日一练社区's avatar
每日一练社区 已提交
43 44 45 46

```

## 答案
每日一练社区's avatar
每日一练社区 已提交
47

每日一练社区's avatar
每日一练社区 已提交
48
```c
每日一练社区's avatar
每日一练社区 已提交
49 50
s.insert(str.substr(i, j - i + 1));
```
每日一练社区's avatar
每日一练社区 已提交
51

每日一练社区's avatar
每日一练社区 已提交
52 53 54
## 选项

### A
每日一练社区's avatar
每日一练社区 已提交
55

每日一练社区's avatar
每日一练社区 已提交
56
```c
每日一练社区's avatar
每日一练社区 已提交
57 58 59 60
s.insert(str.substr(i, j + i + 1));
```

### B
每日一练社区's avatar
每日一练社区 已提交
61

每日一练社区's avatar
每日一练社区 已提交
62
```c
每日一练社区's avatar
每日一练社区 已提交
63 64 65 66
s.insert(str.substr(i, j - i - 1));
```

### C
每日一练社区's avatar
每日一练社区 已提交
67

每日一练社区's avatar
每日一练社区 已提交
68
```c
每日一练社区's avatar
每日一练社区 已提交
69 70
s.insert(str.substr(i, j - i));
```