题解 | #字符串排序#

字符串排序

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

#include <stdio.h>
#include <string.h>
#include <ctype.h>

void sort(char *string)
{
    unsigned long len, i ,j, k;
    char ch1, ch2, tmp;
    
    len = strlen(string);
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - i; j++) {
            if (!isalpha(string[j])) {
                continue;
            }
            
            k = j;
            while ((!isalpha(string[++k])) && (k < (len - i)));
            if (k >= (len - i)) {
                continue;
            }

            ch1 = tolower(string[j]);
            ch2 = tolower(string[k]);
            
            if (ch1 > ch2) {
                tmp = string[j];
                string[j] = string[k];
                string[k] = tmp;
            }
        }
    }
    
}

int main()
{
#define LINE_SIZE (1024)
    char *p, *str;
    int ret, len = 0, str_size = LINE_SIZE;

    str = malloc(str_size);
    if (NULL == str) {
        return -1; 
    }   

    while (1) {
        p = fgets(str + len, str_size - len, stdin);
        if (NULL == p) {
            break;
        }   

        len = strlen(str);
        if (('\n' != str[len - 1]) && (len == str_size - 1)) {
            str_size += LINE_SIZE;
            str = realloc(str, str_size);
            continue;
        }   
        len = 0;
        if (str[0]) {
            sort(str);
            printf("%s", str);
        }   
    }   
    free(str);

    return 0;
}

全部评论

相关推荐

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