题解 | #字符串合并处理#

字符串合并处理

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

🙃🙃🙃🙃🙃🙃 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct StrL
{
    char str;
    int flag;
};
int exchange(struct StrL a[],int len)
{
    int i,j;
    struct StrL temp;
    for(i=0;i<len;i++)
    {
        for(j=0;j<len-1;j++)
        {
            if(a[j].str>a[j+1].str)
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    return 0;
}
int fun(int x,int y)
{
    if(y==0)
    {
        return 1;
    }
    if(--y)
    {
        x*=fun(x,y);
    }
	return x;
}
char tran_bit(int ch)
{
    if(ch==0)
    {
        return '0';
    }
    int m[4]={0},num=0,i,l=0;
    char chr;
    while(ch>1)
    {
        m[num++]=ch%2;
        ch/=2;
    }
    m[num]=1;
    int k=0;
    for(i=3;i>=0;i--)
    {
        l+=m[i]*fun(2,k);
        k++;
    }
    if(l>9&&l<16)
    {
        chr='A'+l-10;
    }
    if(l>=0&&l<=9)
    {
        chr='0'+l;
    }
    return chr;
}
int main()
{
    struct StrL newstr[2000],str3[1000],str4[1000];
    char str1[2000],str2[1000],ch1;
    int i,j,len,ch;
    while(scanf("%s",str1)!=EOF)
    {
        scanf("%s",str2);
        strcat(str1,str2);
        int k=0,len1=0,len2=0;
        len=strlen(str1);
        for(i=0;i<len;i++)
        {
            if(k%2==0)
            {
                newstr[k].flag=0;
            }
            if(k%2==1)
            {
                newstr[k].flag=1;
            }
            newstr[k++].str=str1[i];
        }
        for(i=0;i<len;i++)
        {
            if(newstr[i].flag==0)
            {
                str3[len1++]=newstr[i];
            }
        }
        exchange(str3,len1);
        for(i=0;i<len;i++)
        {
            if(newstr[i].flag==1)
            {
                str4[len2++]=newstr[i];
            }
        }
        exchange(str4,len2);
        k=0;
        for(i=0;i<len;i++)
        {
            if(newstr[i].flag==0)
            {
                newstr[i].str=str3[k++].str;
            }
        }
        k=0;
        for(i=0;i<len;i++)
        {
            if(newstr[i].flag==1)
            {
                newstr[i].str=str4[k++].str;
            }
        }
        for(i=0;i<len;i++)
        {
            if(newstr[i].str>='a'&&newstr[i].str<='f')
            {
                ch=newstr[i].str-32-'A'+10;
                ch1=tran_bit(ch);
            }
            else if(newstr[i].str>='0'&&newstr[i].str<='9')
            {
                ch=newstr[i].str-'0';
                ch1=tran_bit(ch);
            }
            else if(newstr[i].str>='A'&&newstr[i].str<='F')
            {
                ch=newstr[i].str-'A'+10;
                ch1=tran_bit(ch);
            }
            else if(newstr[i].str>='g'&&newstr[i].str<='z')
            {
                ch1=newstr[i].str;
            }
            else if(newstr[i].str>='G'&&newstr[i].str<='Z')
            {
                ch1=newstr[i].str;
            }
            printf("%c",ch1);
        }
        printf("\n");
    }
}

全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务