我的订单定义为“A < a < B < b ...< Z < z”。 我必须确定给定的字符串是否在范围内。 前任。如果我的范围是 AaA - BaB,则 AA 或 AaaB 在范围内,但不在 CbAA 范围内。
我正在寻找任何指示、想法、建议来帮助我开始。我将在 C 中实现它。
最佳答案
因此,您需要实现的只是一个根据您的规则比较两个字符串的函数。这是一种修改后的词汇排序:
int compare_letters(char x, char y) {
char lx = tolower(x);
char ly = tolower(y);
if (lx != ly) {
return lx < ly;
} else {
return x < y;
}
}
int smaller(const char* a, const char* b) {
.. use the above function ...
}
现在使用上面的函数来检查给定的字符串 x 是否在 (a,b) 范围内,检查 smaller(a, x)
和 smaller(x ,b)
。就是这样。
有关较小函数的一些提示 - 逐个字符地比较字符串,如果两个字符不同,则返回它们的 compare_letter
。如果其中一个字符串用完了字母,则将其视为较小的字符串。
关于c - 字符串的范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14284752/