目录
1.题目描述
-
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入格式
-
输入一行字符串,长度小于 $100$。
输出格式
-
如果字符串是回文,输出
yes
;否则,输出no
。样例 #1
样例输入 #1
abcdedcba
样例输出 #1
yes
2.代码
#include <iostream> // 包含输入输出流库
#include <string> // 包含字符串库,以便使用 string 类
using namespace std; // 使用标准命名空间
int main()
{
string s; // 定义一个字符串变量 s
cin >> s; // 从标准输入读取一个字符串并赋值给 s
bool isPalindrome = true; // 定义一个布尔变量 isPalindrome 并初始化为 true
// 遍历字符串的一半长度,检查对称位置的字符是否相等
for (int i = 0; i < s.size() / 2; i++)
{
// 如果字符不相等,则不是回文
if (s[i] != s[s.size() - 1 - i])
{
isPalindrome = false; // 将 isPalindrome 设为 false
break; // 退出循环,因为已经确定不是回文
}
}
// 根据 isPalindrome 的值输出相应的信息
if (isPalindrome)
{
cout << "yes"; // 如果是回文,输出 "yes"
}
else
{
cout << "no"; // 如果不是回文,输出 "no"
}
return 0; // 程序结束,返回 0
}
2.1主要思想
-
这个程序的主要任务是判断输入的字符串是否是回文字符串。回文字符串是指从前往后读和从后往前读都相同的字符串。为了实现这一目标,程序通过比较字符串中对应位置的字符来检查其对称性。
2.2步骤
-
读取输入:
-
使用
cin
从标准输入读取一个字符串,并将其存储在变量s
中。
-
-
初始化标志:
-
定义一个布尔变量
isPalindrome
,初始值为true
。这个变量用于标记字符串是否为回文。
-
-
遍历字符串:
-
使用
for
循环遍历字符串的一半长度(s.size() / 2
)。只需要检查一半长度是因为回文字符串的对称性,前半部分和后半部分是对称相等的。 -
在每次循环中,比较字符串前半部分的字符
s[i]
与后半部分的对应字符s[s.size() - 1 - i]
。
-
-
检查字符是否相等:
-
如果在任意一次比较中发现字符不相等,则将
isPalindrome
设置为false
,并使用break
语句退出循环,因为已经确定字符串不是回文。
-
-
输出结果:
-
根据
isPalindrome
的值决定输出内容。如果isPalindrome
仍然为true
,输出“yes”;否则,输出“no”。
-
-
结束程序:
-
返回 0,表示程序正常结束。
-
3.知识点:
-
bool
是 C++ 中的一个内置数据类型,全称为 "boolean",表示真(true)或假(false)两种状态。它主要用于逻辑判断,通常用于条件语句(如 if, switch, while 等)和函数的返回值。
3.1基本用法:
定义:
bool isTrue = true;
bool isFalse = false;
比较操作:
bool a = true;
bool b = false;
if (a && b) { // 如果 a 和 b 都为 true,条件成立
// ...
}
if (a || b) { // 如果 a 或 b 中至少有一个为 true,条件成立
// ...
}
逻辑运算符:
-
&&
(逻辑与):如果两个操作数都为真,结果才为真。 -
||
(逻辑或):只要有一个操作数为真,结果就为真。 -
!
(逻辑非):对一个布尔值取反,true 变为 false,false 变为 true。
作为函数返回值:
bool checkCondition() {
// ...
return condition;
}
条件语句:
if (condition) {
// 当条件为真时执行的代码
} else {
// 当条件为假时执行的代码
}
字符串转换:
bool isPalindrome = std::string("madam") == std::string("madam").reverse();
作为数组索引:
if (boolValue) {
array[trueIndex] = value;
} else {
array[falseIndex] = value;
}
C++11 引入了 auto 关键字,可以自动推导 bool 类型:
if (std::cin >> value) {
// 输入成功,value 为 true
} else {
// 输入失败,value 为 false
}
4.注意:
bool
类型在 C++ 中占用很少的空间(通常是 1 字节),而且可以隐式转换为 int
(1 对应 true,0 对应 false)。但是,为了提高可读性,通常推荐使用 true
和 false
而不是 1 和 0。
这是洛谷上的题B2124 判断字符串是否为回文,这是本人的学习记录罢了,都是非常基础的题分享给大家,做做参考。如果有错误的地方请大家一定要告知本人。再次表示感谢,如果对大家有帮助的话,希望大家点点赞,关注关注。此后会不断的更新。