题解 | #后缀子串排序#

后缀子串排序

http://www.nowcoder.com/practice/f89f96ea3145418b8e6c3eb75773f65a

不采用STL库,自定义排序的思路。(有些学校上机测试需要自定义函数)

#include <string>

using namespace std;

void ssort(string str[],int n){
    int i,j;
    string temp;
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            int k=0;
            while(str[i][k]!='\0'&&str[j][k]!='\0') {
                
            if(str[i][k]>str[j][k]){
                temp=str[i];
                str[i]=str[j];
                str[j]=temp;
                break;
            }else if(str[i][k]<str[j][k]){
                break;
            }else{
                k++;
                if(str[j][k]=='\0'){
                    temp=str[i];
                str[i]=str[j];
                str[j]=temp;
                }
                continue;
            }
            }
        }
    }
}

int main(){
    string str;
    
    while(cin>>str){
        string s[str.size()];
        int i,j;
        for(i=str.size()-1,j=1;i>=0;i--,j++){
            s[i]=str.substr(i,j);
        }
        ssort(s, str.size());
        
        for(i=0;i<str.size();i++){
            cout<<s[i]<<endl;
        }
    }
    
    
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务