A20206. 字符串的不同字串
填空题
困难
知识点
题目描述
字符串的不同字串
题目描述
给定一个由小写英文字母组成的字符串 s。请问 s的不同非空子串有多少种?
子串是指字符串中连续的一段字符。例如,xxx 是 yxxxy 的子串,但不是 xxyxx 的子串。
输入
输入一行,包含一个字符串 s。
输出
输出一个整数,表示 s的不同非空子串的数量。
数据范围
s仅由小写英文字母组成。
1≤∣s∣≤100,其中 ∣s∣表示字符串的长度。
输入样例1
aababc
输出样例1
17输入样例2
abracadabra输出样例2
54参考答案
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
set<string> st; //使用set保存子串去重
for (int i = 0; i < n; i++) { //枚举所有子串
string sub = "";
for (int j = i; j < n; j++) {
sub += s[j];
st.insert(sub);
}
}
cout << st.size() << endl;
}
上一题
下一题