[英]What is wrong with my palindrome checker?
我试图通过检查每个字符是否始终等于其“对应物”来检查字符串是否为回文:
int isPalindrone(char *inputString) {
int string_size = sizeof(inputString);
int string_length = strlen(inputString);
int stop = (string_length / 2) - 1;
int char_size = sizeof(char);
char *counterpart, idx; // pointer arithmetic: pointers inherently know their own size
// counterpart of first char is last char
counterpart = inputString + string_length - 1;
for (idx = 0; idx <= stop; idx++) {
if (*inputString != *counterpart) {
return 0;
}
inputString += 1;
counterpart -= 1;
}
return 1;
}
您使用的变量比您真正需要的要多得多。
您正在使用指针算术,因此您可以使用指针来检查条件:
int isPalindrone(char *inputString) {
char *counterpart = inputString + strlen(inputString) - 1;
while(inputString < counterpart)
{
if(*inputString != *counterpart)
return 0;
inputString++;
counterpart--;
}
return 1;
}
或者您可以将对应的内容放在 for 循环中:
int isPalindrone(char *inputString) {
for(char *counterpart = inputString + strlen(inputString) - 1; inputString < counterpart; inputString++, counterpart--)
if(*inputString != *counterpart)
return 0;
return 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.