题解 | #字符串排序#

字符串排序

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

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

char str2pos(char s)
{
    if(s >= 'a' && s <= 'z')
    {
        return s - 'a';
    }
    else if(s >= 'A' && s <= 'Z')
    {
        return s - 'A';
    }
    else
    {
        return (char)55;
    }
}

int main() {
    char s[1000] = {0};
	int tmp[4] = {0}, min = 0;

    while (gets(s) != NULL)
    {
        int cnt = strlen(s);
        for(int i = 0; i < cnt - 1; i++)
        {
        	tmp[2] = 0;
            tmp[0] = str2pos(s[i]);
            if(tmp[0] == 55)
            {
                continue;
            }
            for(int j = i + 1; j < cnt; j++)
            {
                tmp[1] = str2pos(s[j]);
               if(tmp[1] == 55)
                {
                    continue;
                }
                if(tmp[1] < tmp[0])
                {
					tmp[0] = tmp[1];
                    tmp[2] = j;
                }
            }
			tmp[3] = s[tmp[2]];
			int tmpk = tmp[2];
			for(int k = tmp[2]; k > i; k--)
			{
				tmp[1] = str2pos(s[k - 1]);
				if(tmp[1] == 55)
				{
					continue;
				}
				else
				{
					s[tmpk] = s[k - 1];
					tmpk = k - 1;
				}
				if(k == i + 1)s[i] = tmp[3];
			}
        }
        printf("%s", s);
    }
    return 0;
}

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务