测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题