字符串排序之c语言题解(不区分大小写排序,非字母顺序不变)

字符串排序

http://www.nowcoder.com/questionTerminal/5190a1db6f4f4ddb92fd9c365c944584

思路:
1、用fgets方法获取字符串str
2、将字符串中的字母取出并排好序,放入temp
3、循环str,是字母的则用已经排好序的temp替换
注意:非字母顺序不变,大写或小写字母保持原顺序,fgets会将换行符号一起获取,无需额外输出换行符

//不区分大小写排序,非字母顺序不变
//思路:先将字母取出并排序,然后再将字母填入原string中
#include<stdio.h>
#include<string.h>

//判断,0则不是字母,其他则为字母的大小
int judge(char s){
    if(s>='a' && s <= 'z')
        return s-'a'+1;
    else if(s>='A' && s<='Z')
        return s-'A'+1;
    return 0;
}
int main(void){
    char str[1000];
    while(fgets(str,sizeof(str),stdin)!=NULL){
        char temp[1000] = {0};
        int len = strlen(str),i,j,key=0;
        for(i = 0;i<len;i++){
            if(judge(str[i])){
                temp[key] = str[i];
                for(j = key - 1;j>=0;j--){
                    if(judge(temp[j]) > judge(str[i])){
                        temp[j+1] = temp[j];
                        temp[j] = str[i];
                    }
                }
                key++;
            }
        }
        j=0;
        for(i=0;i<len;i++){
            if(judge(str[i])){
                str[i] = temp[j];
                j++;
            }
        }
        printf("%s",str);
    }
    return 0;
}
全部评论

相关推荐

07-23 12:04
门头沟学院 Java
现在是很缺人吗
码农索隆:缺分母,不缺分子,这样好作为炫耀的资本
点赞 评论 收藏
分享
LazyBreeze:项目尽量体现你对技术的理解和深度,不是说把中间件用一下就完事了,你项目里面提到集群和分布式,你真在服务器上部署过吗,感觉太假了,第二个项目说自己用了微服务的什么组件,只是用了没有自己的思考,很难让面试官注意到你的简历。针对某几个技术点自己多思考一下,考虑一下有没有别的替代方案,可以写一下,即使没有真的实现
点赞 评论 收藏
分享
07-24 19:01
门头沟学院 Java
后天笔试,又要开始做题了
Sairus:明天10:00笔试
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
5
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务