给定一个字符串。任务是检查字符串是否是回文字符串或不使用指针。不允许使用任何内置的字符串函数。
的字符串被认为是回文如果字符串的反向是一样的原始字符串。例如,“女士”是回文,因为当字符串反向时,可以获得相同的字符串,但是“女士”不是回文。
Input: str = "Madam"
Output: String is not a Palindrome.
Input: str = "madam"
Output: String is Palindrome.
Input: str = "radar"
Output: String is Palindrome.
算法:
- 用两个指针说ptr和rev 。
- 将ptr初始化为字符串的基地址,然后将其向前移动以指向字符串的最后一个字符。
- 现在,将rev初始化为字符串的基地址,并同时开始向前移动rev和向后移动ptr ,直到到达字符串的中间。
- 如果在任何时候ptr和rev指向的字符都不匹配,则从循环中中断。
- 检查ptr和rev是否相互交叉,即rev> ptr 。如果是这样,则该字符串是回文,否则不是。
下面是上述方法的实现:
// C program to check if a string is palindrome
// using pointers
#include
// Function to check if the string is palindrome
// using pointers
void isPalindrome(char* string)
{
char *ptr, *rev;
ptr = string;
while (*ptr != '\0') {
++ptr;
}
--ptr;
for (rev = string; ptr >= rev;) {
if (*ptr == *rev) {
--ptr;
rev++;
}
else
break;
}
if (rev > ptr)
printf("String is Palindrome");
else
printf("String is not a Palindrome");
}
// Driver code
int main()
{
char str[1000] = "madam";
isPalindrome(str);
return 0;
}
输出:
String is Palindrome
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。