C语言——oj刷题——回文字符串

问题:

实现一个函数,判断一个字符串是否为回文字符串。

回文字符串是指正读和反读都相同的字符串。例如,"level"、"radar"和"madam"都是回文字符串。

要解决这个问题,我们可以使用两个指针分别指向字符串的首尾字符,然后逐步向中间移动,同时比较指针所指向的字符是否相等。如果在比较过程中发现不相等的字符,那么该字符串就不是回文字符串。


下面是一个示例代码,演示如何通过C语言实现判断回文字符串的函数:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

bool isPalindrome(const char *str) {
    int left = 0; // 左指针
    int right = strlen(str) - 1; // 右指针

    while (left < right) {
        if (str[left] != str[right]) {
            return false; // 如果字符不相等,则不是回文字符串
        }
        left++; // 左指针向右移动
        right--; // 右指针向左移动
    }

    return true; // 如果所有字符都相等,则是回文字符串
}

int main() {
    const char *str1 = "level";
    const char *str2 = "hello";

    if (isPalindrome(str1)) {
        printf("%s is a palindrome.\n", str1);
    } else {
        printf("%s is not a palindrome.\n", str1);
    }

    if (isPalindrome(str2)) {
        printf("%s is a palindrome.\n", str2);
    } else {
        printf("%s is not a palindrome.\n", str2);
    }

    return 0;
}

在上述代码中,isPalindrome函数接受一个指向常量字符的指针str作为参数,并返回一个布尔值。函数内部,我们使用leftright两个指针分别指向字符串的首尾字符。然后,通过一个循环,我们逐步将左指针向右移动,右指针向左移动,并比较指针所指向的字符是否相等。如果在比较过程中发现不相等的字符,那么该字符串就不是回文字符串,我们返回false。如果循环结束后没有发现不相等的字符,那么该字符串就是回文字符串,我们返回true

main函数中,我们定义了两个字符串str1str2,并分别调用isPalindrome函数来判断它们是否为回文字符串。根据返回的结果,我们打印相应的提示信息。

这个算法的时间复杂度是O(n),其中n是字符串的长度。因为我们需要遍历字符串的一半来进行比较,所以算法的效率是非常高的。

相关推荐

  1. C语言——oj——字符串

    2024-02-15 23:52:01       48 阅读
  2. C语言——oj——实现字符串逆序

    2024-02-15 23:52:01       51 阅读
  3. C语言——oj——字符串左旋

    2024-02-15 23:52:01       41 阅读
  4. 判断字符串C语言

    2024-02-15 23:52:01       64 阅读
  5. oj-C语言

    2024-02-15 23:52:01       35 阅读
  6. C语言】6-5 判断字符串 分数 20

    2024-02-15 23:52:01       54 阅读
  7. C语言——oj——模拟实现库函数strlen

    2024-02-15 23:52:01       55 阅读
  8. C语言——oj——杨氏矩阵

    2024-02-15 23:52:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-15 23:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-15 23:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-15 23:52:01       82 阅读
  4. Python语言-面向对象

    2024-02-15 23:52:01       91 阅读

热门阅读

  1. Integer.toHexString(b & 0xff)理解以及& 0xff什么意思

    2024-02-15 23:52:01       48 阅读
  2. 为什么USB要转TTL

    2024-02-15 23:52:01       59 阅读
  3. 项目中的任务调度和消息队列方案详解

    2024-02-15 23:52:01       43 阅读
  4. 类与对象 上

    2024-02-15 23:52:01       51 阅读
  5. 【HarmonyOS】鸿蒙开发之状态管理——第2.2章

    2024-02-15 23:52:01       50 阅读
  6. with 用法

    2024-02-15 23:52:01       58 阅读
  7. c++ 自定义Logger 日志类

    2024-02-15 23:52:01       58 阅读
  8. 个人浅见之程序员为什么不喜欢关电脑

    2024-02-15 23:52:01       55 阅读
  9. 跨域问题浅析

    2024-02-15 23:52:01       59 阅读
  10. Python概率建模算法和图示

    2024-02-15 23:52:01       54 阅读
  11. 自动化专业英语词汇积累【第一期】

    2024-02-15 23:52:01       48 阅读
  12. 011axios

    2024-02-15 23:52:01       43 阅读
  13. 广度优先搜索:一层一层探索

    2024-02-15 23:52:01       62 阅读