题目
不论比赛的时候,还是赛后补题的时候,一直以为满足题意的字符串的长度一定要相等,所以看样例的时候,一直百思不得其解。看了官方的题解思路之后,才发现自己先入为主地读错题意了。值得警醒自己,一定要认真读题,分析题意。
至于解题思路,是本菜鸡自己想的,注意满足题意的字符串的左右两端是不能再删去字符,而且该字符串覆盖了整个字符串的所有不同字符。在这种情况下,要求字符串长度最小。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
string str;
while(cin>>str){
set<char> st1, st3, st4;
set<string> st2;
int size=(int)str.size();
for(int i=0; i<size; i++){
st1.insert(str[i]);
}
for(int i=0; i<size; i++){
st3.clear();
st4.clear();
string temp="", temp1="", temp2="";
temp+=str[i];
st3.insert(str[i]);
for(int j=i+1; j<=size; j++){
if(st3==st1 && (int)st3.size()!=size){
if(st4!=st1){
st2.insert(temp);
}
break;
}
st3.insert(str[j]);
st4.insert(str[j]);
temp+=str[j];
}
}
printf("%d\n", (int)st2.size());
str.clear();
}
return 0;
}