首页 > 其他分享 >信息学奥赛一本通:1146:判断字符串是否为回文

信息学奥赛一本通:1146:判断字符串是否为回文

时间:2024-03-15 09:30:08浏览次数:24  
标签:信息学 1146 奥赛 int cin str 字符串 getline out

【题目描述】

输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。

【输入】

输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。

【输出】

如果字符串是回文,输出yes;否则,输出no。

【输入样例】

abcdedcba

【输出样例】

yes

【参考程序一】

使用字符数组
cin.getline()函数
【函数用法】
接收一个字符串并输出(可含空格)。
【参数详解】
1.cin.getline()函数的完整形式有三个参数:cin.getline(字符数组名,字符个数,结束标志)
    注意:若指定参数“字符个数”为n,则利用cout函数输出时只显示字符数组中的前n-1个字符。
    原因:字符数组的第n个字符是不可见字符'\0'
2.当第三个参数省略时,系统默认为'\0'
3.简单实例:  
  cin.getline(str,8,'m'),当输入abcdefghijklmn时,输出abcdefg,因为第8位是不可见字符'\0'
  cin.getline(str,8,'e'),当输入abcdefghijklmn时,输出abcd
 
函数strlen()是C语言的提供的函数。
它包含在#include <string.h>这个头文件中,strlen函数接受的实参是一个字符串数组,返回值是字符串数组的长度,不包括空字符在内,返回的值是一个int类型的整数值。
#include<bits/stdc++.h>
using namespace std;
char str[101],out[101];
int main()
{
    int len=0;
    cin.getline(str,101);
    len=strlen(str);
    for(int i=0;i<len;i++)
    {
    	out[i]=str[len-1-i];
	}
	for(int i=0;i<len;i++)
    {
    	if(out[i]!=str[i])
    	{
    		cout<<"no"<<endl;
    		return 0;
		}
	}
	cout<<"yes"<<endl;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
char str[101];
int main()
{
    int len=0;
    cin.getline(str,101);
    len=strlen(str);
    for(int i=0;i<len/2;i++)
    {
    	if(str[i]!=str[len-1-i])
    	{
    		cout<<"no"<<endl;
    		return 0;
		}
    	
	}
	cout<<"yes"<<endl;
    return 0;
}

【参考程序二】

reverse()函数

用来翻转数组,字符串,向量;
头文件:#include<algorithm>

reverse(s.begin(),s.end());   //翻转整个字符串
reverse(s.begin()+i,s.begin()+k);   //翻转下标i到k(注意不包含k)

reverse(a,a+n);//n为数组长度    翻转整个数组

reverse(a+i,a+k);//翻转指定范围 下标为i到k(不包括k)

reverse(vect.begin(),vect.end());//写法和数组一样
 

" 三目运算符 " , 又称为 " 条件运算符 "

相当于一个简化版本的 if else 语句 ;
三目运算符语法 :
condition ? expression1 : expression2
上面的 condition 必须是一个 返回布尔值 的表达式 , C 语言中一般是 int ;
如果 condition 的值为 非零值 , 也就是 true , 则整个 三目运算符 表达式 返回 expression1 的值 ;
如果 condition 的值为 零值 , 也就是 false, 则整个 三目运算符 表达式 返回 expression2 的值 ;
#include<bits/stdc++.h>
using namespace std;
string str,out;
int main()
{
    int len=0;
    getline(cin,str);
    out=str;
	reverse(out.begin(),out.end());
    if(str==out)
    {
    	cout<<"yes"<<endl;	
	}
	else{
		cout<<"no"<<endl;
	} 
	
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
string str,out;
int main()
{
    int len=0;
    getline(cin,str);
    out=str;
	reverse(out.begin(),out.end());//reverse函数可以用来反转字符串或者数组,需要包含头文件:#include<algorithm> 
    str==out?cout<<"yes":cout<<"no";	

    return 0;
}

 

 

标签:信息学,1146,奥赛,int,cin,str,字符串,getline,out
From: https://blog.csdn.net/u014117969/article/details/136727996

相关文章

  • 信息学奥赛一本通题目解析:2086:【22CSPJ普及组】乘方(pow)
    2086:【22CSPJ普及组】乘方(pow)题目描述小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数aaa和b......
  • 关于信息学奥赛中的一些做题思路
    观前须知Sugar_Cube的博客园主页背景介绍本文记录了笔者在刷题或比赛中运用到的一些做题思路可以适当参考正文LuoguP2048超级钢琴首先显然有\(\mathcal{O}(n^2)\)暴力枚举每个子段,然后选择其中前k大的那么可以发现有贪心策略:选择k次最大值那么考虑怎样求最大值想......
  • 初三奥赛模拟测试1
    初三奥赛模拟测试1\(T1\)回文\(0pts\)设\(f_{x_{1},y_{1},x_{2},y_{2}}\)表示从\((1,1)\)到\((x_{1},y_{1})\)结束的回文路径条数,其中\((x_{1},y_{1})\)关于最终形成的回文串的回文中心的对称点为\((x_{2},y_{2})\)。状态转移方程为\(f_{x_{1},y_{1},x_{2},y_{2......
  • 初三奥赛模拟测试1
    前言比赛链接总分:\(107pts\)\(T1~79pts:\)坐标\(DP\),赛时感觉打的是正解,但是打假了。\(T2~28pts:\)理解错题了,以为是帮他调程序了,于是给人家调\(TLE\)了。\(T3~0pts,T4~0pts:\)没啥好说的,不会。官方题解T1回文点击查看题面部分分:部分分没什......
  • 初三奥赛模拟测试1--T1回文
    初三奥赛模拟测试1--\(T1\)回文HZOI题意给定一个\(n\timesm\)的,由字符组成的矩阵\(A\),问你由\((1,1)\)开始,点\((i,j)\)只可以往\((i+1,j)\)和\((i,j+1)\)走,走到\((n,m)\)停。记录路径,问由路径上的字符构成的字符串能是回文串......
  • 信息学竞赛中的一些调试方法
    观前须知Sugar_Cube的博客园主页本文背景介绍本文包含了笔者及其同学再模拟赛或正式比赛中出现的问题继承了笔者曾在dl24jpoj上发布的警钟撅烂系列警钟长鸣~正文RE数组下标越界,stl.empty函数记得写返回值手写队列算好长度数组注意开2倍递归记得写边界其他循环迭......
  • 关于信息学奥赛中的一些做题思路
    观前须知鼠鼠我啊,非常非常的菜呢如有错误,感谢各位大佬指出本文只包含笔者在比赛过程中总结的一些比赛思路不全面,也不一定正确请多多包涵喵~本文持续更新正片暴力(枚举暴搜模拟)暴搜剪枝出奇迹乱搞做法出奇迹通过数据规模猜测算法复杂度进而推出算法通过归纳总结性质对......
  • 集训队论文浅读 - 信息学竞赛中构造题的常用解题方法
    抽屉原理把\(n\)个物品放入\(k\)个抽屉中,其中至少有一个抽屉中有\(\lceil\dfrac{n}{k}\rceil\)个物品,并一定有一个抽屉包含\(\lfloor\dfrac{n}{k}\rfloor\)个物品。构造题中考虑构造不同情况的抽屉,应对构造权值类问题。对于取整符号要敏感。Codeforces1450C2构......
  • 生物信息学的打怪升级—初段小白必备
    生物信息学的打怪升级—初段小白必备  写在前面生物信息学是什么?Bio+informatics=Bioinformatics生物信息学(Bioinformatics)是在生命科学的研究中,以计算机为工具对生物信息进行储存、检索和分析的科学。它是当今生命科学和自然科学的重大前沿领域之一,同时也将......
  • 初中信息奥赛模拟测试
    初中信息奥赛模拟测试终于是肯给hzoi2024整场模拟赛了。题其实并不是很难。但很有价值。ZEW的游戏(T2)显然是直接求斜率。注意判\(0\)。因为绝对值小于\(1000\),可以直接用小数。正经应该是写个分数存,也不难实现。小数:CODE#include<bits/stdc++.h>usingnames......