代码超时了,后面会找时间修改的 QAQ
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小猫在研究字符串。
小猫在研究字串。
给定一个长度为N的字符串S,问所有它的子串Sl…r(1≤l≤r≤N),去重后有多少种。
输入描述:
一行一个字符串S。
输出描述:
一行一个整数,表示答案。
示例1
输入
复制
ababa
输出
复制
9
备注:
1≤N≤105,字符都是小写字母
#include<iostream>
#include<math.h>
using namespace std;
int fun(string s){
string temp;
string a[100000];
int index=1;
int num=0;
int sum=0;
for(int i=0;i<s.size();i++){
for(int j = i;j<s.size();j++){
temp+=s[j];
for(int k=1;k<=index;k++){
if((a[k].find(temp)!=-1)&&a[k].size()!=temp.size()){
num++;
}
else{
if(a[k].find(temp)==-1)
num++;
}
}
if(num==index){
a[index]=temp;
index++;
sum++;
}
num=0;
}
temp="";
}
return sum;
}
int main(){
string s;
while(cin>>s){
cout<<fun(s)<<endl;
}
return 0;
}
提价结果:(超时)
恭喜!您提交的程序通过了你的自测数据。(运行时间:4ms,内存占用:3m)
注意:自测用例通过仅代表自测时使用的数据通过,不代表题目的测试用例均能通过
#include<iostream>
#include<math.h>
#include<set>
using namespace std;
int fun(string s){
string temp;
string a[100000];
int index=1;
int sum=0;
set<string> seter;
for(int i=0;i<s.size();i++){
for(int j = i;j<s.size();j++){
temp+=s[j];
//cout<<"temp="<<temp<<endl;
set<string>:: iterator ret = seter.find(temp);
if(ret == seter.end()){
seter.insert(temp);
sum++;
}
}
temp="";
}
return sum;
}
int main(){
string s;
while(cin>>s){
cout<<fun(s)<<endl;
}
return 0;
}
自测结果(超时)
恭喜!您提交的程序通过了你的自测数据。(运行时间:5ms,内存占用:3m)
注意:自测用例通过仅代表自测时使用的数据通过,不代表题目的测试用例均能通过。