c 回文字符串
- 行业动态
- 2025-02-26
- 2
回文字符串是指正读和反读都相同的字符串,如“madam”。
C语言中回文字符串的构建与判断
在C语言中,回文字符串是指正着读和反着读都相同的字符串,如“level”、“madam”等,处理回文字符串主要涉及两个操作:判断一个字符串是否为回文以及构建回文字符串,下面将详细介绍这两种操作的实现方法。
一、判断回文字符串
1、双指针法
原理:设置两个指针,一个指向字符串的起始位置,另一个指向字符串的末尾位置,然后逐步向中间移动并比较两个指针所指向的字符,如果所有字符都相等,则该字符串是回文字符串;如果有任何一个字符不相等,则该字符串不是回文字符串。
代码示例:
#include <stdio.h> #include <string.h> bool isPalindrome(char str[]) { int start = 0; int end = strlen(str) 1; while (start < end) { if (str[start] != str[end]) { return false; } start++; end--; } return true; }
2、递归法
原理:通过递归不断去除首尾字符来检查子串是否为回文,对于奇数长度的字符串,最后会剩下中间的一个字符;对于偶数长度的字符串,最后不会剩下字符。
代码示例:
#include <stdio.h> #include <string.h> bool isPalindromeRecursive(char str[], int start, int end) { if (start >= end) { return true; } if (str[start] != str[end]) { return false; } return isPalindromeRecursive(str, start + 1, end 1); }
二、构建回文字符串
1、字符串操作方法
原理:通过对字符串进行遍历、复制和拼接等操作,可以轻松实现回文的构建,可以将原字符串和其逆序字符串拼接在一起。
代码示例:
#include <stdio.h> #include <string.h> void constructPalindrome(char str[]) { int len = strlen(str); char palindrome[2 * len + 1]; strcpy(palindrome, str); for (int i = 0; i < len; i++) { palindrome[len + i] = str[len i 1]; } palindrome[2 * len] = '