文章

37

粉丝

168

获赞

13

访问

285.3k

头像
P1294 解题思路分享
P1294 上海交通大学机试题
发布于2021年3月8日 18:07
阅读数 8.3k

char[]版本 

#include <bits/stdc++.h>
using namespace std;

bool cmp(char *s1, char *s2){
    char *p1=s1, *p2=s2;
    while(*(p1++)==*(p2++));
    return *(--p1)<*(--p2);
}

int main()
{
    char s[105];
    char *ss[105];
    while(cin >>s){
        int len=strlen(s);
        char *sp=s;
        for(int i=0;i<len;i++){
            ss[i]=sp++;
        }
        sort(ss,ss+len,cmp);
        for(int i=0; i<len; i++){
            cout<<ss[i]<<endl;
        }
    }
}

 string版本

#include <bits/stdc++.h>
using namespace std;

bool cmp(string a, string b){
	return a<b;
}

int main()
{
	string s;
	string ss[100];	
	while(cin >>s){
		int len=s.size();	
		for(int i=0; i<len; i++)
			ss[i]=s.substr(i,len-i); //拷贝s字符串中i之后len-i个字符
		sort(ss,ss+len,cmp);
		for(int i=0; i<len; i++){//s的长度和后缀字串个数一样为len
			cout<<ss[i]<<endl;
		}
	}
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发