字符串的处理 (20分)
- 问题描述
对于一个字符串,我们对其的后缀子串进行排序,例如banana
其子串有:
banana
anana
nana
ana
na
a
然后对各子串按字典顺序排序,即:
a ana anana banana na nana
- 输入
每个案例为若干行字符串。
- 输出
将子串排序输出
- 输入样例
grain
banana
- 输出样例
将子串排序输出
问题分析
字符串需要进行从后往前的分解为子串,或者从前往后获取,由于每次需要排序 于是可以用map 可以省去排序的步骤 因为map<string,int> 中的string 即为有序
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
while(cin>>s){
getchar();
map<string,int> m;
for(int i = 0;i < s.length();i++){
string c = "";
for(int j = s.length() - 1 - i;j < s.length();j++){ //通过循环获取子串
c+=s[j];
}
m[c]++; //将子串储存的map中
}
for(map<string,int>::iterator it = m.begin() ;it != m.end();it++){
cout<<it->first<<endl;
}
s="";
}
return 0;
}