我的订单定义为'A < a < B < b ...< Z < z'。我必须找出给定的字符串是否在范围内。前任。如果我的范围是 AaA - BaB,AA 或 AaaB 在范围内,但不是 CbAA。
我正在寻找任何可以帮助我开始的指针、想法和建议。我将在 C 中实现它。
我的订单定义为'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
. 如果其中一个字符串用完了字母,请考虑将其变小。