#include <stdlib.h>
#include <string.h>
#include "oj.h"
/*
功能:字符串处理
输入:两个字符串,需要异常处理
输出:合并处理后的字符串,具体要求参考文档
返回:无
*/
void StringOddEvenSort(char* strSer)
{
int sLen = 0;
char iTemp = 0;
char *strOdd = NULL;
char *strEven = NULL;
if (NULL==strSer)
{
return;
}
sLen = strlen(strSer);
// 奇数项排序
for(int i = 0;i<sLen -2; i+= 2)
{
for(int j =0;j<sLen-2;j+=2)
{
if(strSer[j] > strSer[j+2])
{
iTemp = strSer[j];
strSer[j] = strSer[j+2];
strSer[j+2] = iTemp;
}
}
}
//偶数项排序
for(int i = 1;i<sLen-2;i+= 2)
{
for(int j =1;j<sLen-2;j+=2)
{
if(strSer[j]>strSer[j+2])
{
iTemp = strSer[j];
strSer[j] = strSer[j+2];
strSer[j+2] = iTemp;
}
}
}
}
void BITReverSort(char* pstrSort)
{
int sLen = 0;
int iIndex = 0;
char BIT[16]={'0','8','4','C','2','A','6','E','1','9','5','D','3','B','7','F'};
if(NULL==pstrSort)
{
return;
}
sLen=strlen(pstrSort);
for(int i=0;i<sLen;i++)
{
if(pstrSort[i]>='0'&& pstrSort[i]<='9')
{
iIndex = pstrSort[i] - '0';
pstrSort[i]=BIT[iIndex];
}
else if (pstrSort[i] >='a' && pstrSort[i] <='f')
{
iIndex=pstrSort[i]-'a'+10;
pstrSort[i]=BIT[iIndex];
}
else if(pstrSort[i]>='A' && pstrSort[i]<='F')
{
iIndex=pstrSort[i]-'A'+10;
pstrSort[i]= BIT[iIndex];
}
}
}
void ProcessString(char* str1,char *str2,char * strOutput)
{
int Len1 = 0;
int Len2 = 0;
if (NULL==str1||NULL==str2||NULL==strOutput)
{
return;
}
if ('\0'==*str1 && '\0'==*str2)
{
return;
}
Len1 = strlen(str1);
Len2 = strlen(str2);
if ('\0' == *str1)
{
memcpy(strOutput, str2, Len2 + 1);
}
else if('\0' == *str2)
{
memcpy(strOutput, str1, Len1 + 1);
}
else
{
memcpy(strOutput, str1, Len1 + 1);
strcat(strOutput, str2);
}
//奇偶项排序
StringOddEvenSort(strOutput);
//BIT倒排
BITReverSort(strOutput);
}
本文详细介绍了如何使用C语言实现字符串的奇偶项排序和BIT倒排算法,包括核心函数解析、输入输出处理和排序过程,适用于字符串数据处理领域的专业人士。
11万+

被折叠的 条评论
为什么被折叠?



