您的位置:首页 > 其它

笔试题:cvte第一题二分法求字符串

2015-09-08 20:14 148 查看
#include <iostream>
using namespace std;
typedef struct String2Number
{
char *String;
int code;
};
String2Number auString2Number[] =
{
{"au",0x10},
{"bc",0x2},
{"chn",0x11},
{"dd",0x3},
{NULL,0},
{"zai",0x80}
};
bool IsEq(char *str1,char *str2)
{
char *p1 = str1;
char *p2 = str2;
while (*p1 == *p2 && *p1!='\0')
{
p1++;
p2++;
}
if (*p1 == '\0' && *p2 == '\0')return 0;
if (*p1 > *p2)return 1;
if (*p1 < *p2)return -1;
}
int GetCode(char *string)
{
int i = 0;
int j = sizeof(auString2Number) / sizeof(String2Number)-1;//统计元素个数。
while (i <= j)
{
int mid = i + (j - i) / 2;
if (IsEq(auString2Number[mid].String, string)==1)
{
j = mid - 1;
}
else if (IsEq(auString2Number[mid].String, string) == -1)
{
i = mid + 1;
}
else
{
return auString2Number[mid].code;
}
}
return -1;
}
int main()
{
cout << GetCode("au") << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: