题目描述
对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain
输入描述:
每个案例为一行字符串。
输出描述:
将子串排序输出
示例1
输入
grain
输出
ain
grain
in
n
rain
经验
- cin.get(),cin.getline() 是C++的
cin.get()获取一个字符
cin.getline() 获取一行字符串
getline(cin,s)是C的,获取一行字符串 - substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。
- 万能头文件#include<bits/stdc++.h>
- 在C++11标准的语法中,auto被定义为自动推断变量的类型。例如:
auto x=5.2;//这里的x被auto推断为double类型
map<int,int>m;
for(auto it=m.begin();it!=m.end();++it)//这里it被auto推断为map<int,int>::iterator类型
- set里面的insert自动降重并升序排列
AC代码
#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <math.h>
#include <set>
using namespace std;
int main(){
string str;
while(getline(cin,str)){
set<string> se;
int len=str.size();
for(int i=0;i<len;++i)
se.insert(str.substr(i,len-i));
for(auto it=se.begin();it!=se.end();++it)
cout<<*it<<endl;
}
return 0;
}