【华为笔试】大端小端两种字节排序,输入编码组个数以及编码内容,解析字符串
现定义一种字符编码,编码格式为:
9个字符为一组,第一个字符为0时代表小端排序,第一个字节为1时,代表大端排序。
例如:012345678为小端排序,解析为87654321
112345678代表大端排序,解析为12345678
采用C语言编程:
#include<stdio.h>
int main(){
int n=0;
scanf("%d",&n);
char a[128];
scanf("%s",a);
int i=0;
for(i=0;i<n;i++){
if(a[9*i]=='0'){
for(int j=8;j>0;j--){
printf("%c",a[9*i+j]);
}
}
if(a[9*i]=='1'){
for(int k=1;k<9;k++){
printf("%c",a[9*i+k]);
}
}
if(!(i==n-1))
printf(" ");
}
return 0;
}
运行结果:
核心思想解释:
作为一种节约内存的算法,不应额外申请内存空间,直接在需要输入的数组的基础上进行输出。
将a分为n组,然后判断每组第一个字符,进而判断为大端还是小端,最后针对两种不同方式进行不同的输出。
最后,因为最后一个空格无需输出,所以在输出空格之前进行判断。