编程字符串怎么看回文

时间:2025-01-28 05:04:20 网络游戏

判断一个字符串是否为回文,可以通过以下几种方法:

双指针法

使用两个指针,一个指向字符串的开头,另一个指向字符串的末尾。

逐个比较两个指针所指向的字符,如果所有对应位置的字符都相同,则该字符串是回文。

时间复杂度为O(n),空间复杂度为O(1)。

暴力法

将字符串翻转后与原字符串进行比较。

如果翻转后的字符串与原字符串相同,则该字符串是回文。

时间复杂度为O(n),空间复杂度为O(n)。

递归法

将字符串分成两个部分,分别判断左半部分和右半部分是否相等。

如果左半部分和右半部分相等,则该字符串是回文。

时间复杂度为O(n),空间复杂度为O(n)。

字符串反转法

将字符串反转后与原字符串进行比较。

如果反转后的字符串与原字符串相同,则该字符串是回文。

时间复杂度为O(n),空间复杂度为O(n)。

示例代码

```cpp

include

include

bool isPalindrome(const std::string& str) {

int left = 0;

int right = str.length() - 1;

while (left < right) {

if (str[left] != str[right]) {

return false;

}

left++;

right--;

}

return true;

}

int main() {

std::string input;

std::cout << "请输入一个字符串: ";

std::getline(std::cin, input);

if (isPalindrome(input)) {

std::cout << "字符串 \"" << input << "\" 是回文字符串。" << std::endl;

} else {

std::cout << "字符串 \"" << input << "\" 不是回文字符串。" << std::endl;

}

return 0;

}

```

解释

双指针法

`left` 指向字符串的开头,`right` 指向字符串的末尾。

在每次循环中,比较 `str[left]` 和 `str[right]`,如果不相等,则返回 `false`。

如果所有对应位置的字符都相等,则返回 `true`。

主函数

从用户输入读取字符串。

调用 `isPalindrome` 函数判断字符串是否为回文。

根据判断结果输出相应的信息。

这种方法简单高效,适用于大多数情况。