#2洛谷题目分享(B2124 判断字符串是否为回文)

目录

1.题目描述

输入格式

输出格式

样例 #1

样例输入 #1

样例输出 #1

2.代码

2.1主要思想

2.2步骤

3.知识点:

3.1基本用法:

4.注意:


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步骤

  1. 读取输入

    • 使用 cin 从标准输入读取一个字符串,并将其存储在变量 s 中。

  2. 初始化标志

    • 定义一个布尔变量 isPalindrome,初始值为 true。这个变量用于标记字符串是否为回文。

  3. 遍历字符串

    • 使用 for 循环遍历字符串的一半长度(s.size() / 2)。只需要检查一半长度是因为回文字符串的对称性,前半部分和后半部分是对称相等的。

    • 在每次循环中,比较字符串前半部分的字符 s[i] 与后半部分的对应字符 s[s.size() - 1 - i]

  4. 检查字符是否相等

    • 如果在任意一次比较中发现字符不相等,则将 isPalindrome 设置为 false,并使用 break 语句退出循环,因为已经确定字符串不是回文。

  5. 输出结果

    • 根据 isPalindrome 的值决定输出内容。如果 isPalindrome 仍然为 true,输出“yes”;否则,输出“no”。

  6. 结束程序

    • 返回 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)。但是,为了提高可读性,通常推荐使用 truefalse 而不是 1 和 0。

这是洛谷上的题B2124 判断字符串是否为回文,这是本人的学习记录罢了,都是非常基础的题分享给大家,做做参考。如果有错误的地方请大家一定要告知本人。再次表示感谢,如果对大家有帮助的话,希望大家点点赞,关注关注。此后会不断的更新。

  • 59
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值