📌  相关文章
📜  使用指针检查字符串在C中是否是回文

📅  最后修改于: 2021-05-28 05:27:28             🧑  作者: Mango

给定一个字符串。任务是检查字符串是否是回文字符串或不使用指针。不允许使用任何内置的字符串函数。

的字符串被认为是回文如果字符串的反向是一样的原始字符串。例如,“女士”是回文,因为当字符串反向时,可以获得相同的字符串,但是“女士”不是回文。

Input: str = "Madam"
Output: String is not a Palindrome.

Input: str = "madam"
Output: String is Palindrome.

Input: str = "radar"
Output: String is Palindrome.

算法

  1. 用两个指针说ptrrev
  2. ptr初始化为字符串的基地址,然后将其向前移动以指向字符串的最后一个字符。
  3. 现在,将rev初始化为字符串的基地址,并同时开始向前移动rev和向后移动ptr ,直到到达字符串的中间。
  4. 如果在任何时候ptr和rev指向的字符都不匹配,则从循环中中断。
  5. 检查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基础课程》。