11 条题解
-
7
解析
这个题还是比较简单的,课上有哦吼!
(所以我只挑简单的题写题解是吗?bushi我们要判断这个字符串是否为回文数,也就是说把这个字符串反过来以后两个依然相等
for循环跑一半i <= n/2 然后s[i ]和s[ n-i+1]去比对就好啦!
如果不一样就输出no然后return 0 循环结束,也就是比对后一样就直接输出yes就好了
(满级语文,嘿嘿!)
疯狂暗示点‘亿’点点赞!哦吼! 第一次写题解!
(话说有没有人知道苦瓜奶茶是什么味道?好喝嘛?👀️
小茗der纸张代码
#include <iostream> #include <cstring> using namespace std; int main() { char s[114514];//好臭的数字!(划掉) cin >> s + 1; int n = strlen(s + 1); for (int i = 1; i <= n / 2; i++) { if (s[i] != s[n-i+1]) { cout << "no"; return 0; } } cout << "yes"; return 0; } //课上有一模一样的为什么在这还要做一遍哈(?
-
2
其实这道题的回文很容易。如果长度为奇数,则中间的元素不用考虑,而整数除法可以舍去中点;偶数就不用我说了吧 上代码
#include <iostream> using namespace std; int main(){ string s; bool flag=true; cin>>s; for(int i=0;i<s.length()/2;i++){ if(s[i]!=s[s.length()-1-i]){ flag=false; break; } } flag?cout<<"yes"<<endl:cout<<"no"<<endl; return 0; }
-
1
解析
若当前字符串为s回文字符串,数据保存在1~n中
那么对于任意一个i,都有s[i]等于s[n - i + 1]
题解
#include <iostream> #include <cstring> using namespace std; int main() { char s[105]; cin >> s + 1; int n = strlen(s + 1); for (int i = 1; i <= n / 2; i++) { if (s[i] != s[n - i + 1]) { cout << "no"; return 0; } } cout << "yes"; return 0; }
-
-2
- 前言
判断字符串是否回文,是c++,python,java最简单的字符串应用,蓝桥杯不会考,NOI不会考,但是CCF竟然烤,
是不是CCF不刑啊 - 分析 emmmmm....其实就是把一个字符串正着判断,反着判断是不是一样的就完事了
- c++代码
- 我教大家一步一步的写(顺便整下花活),准备好头盔上车了. 先导入头文件 不建议使用万能头,因为会拖慢时间,有这时间不如多跑几个数据,对吧 `
#include <iostream> #include <cstring> #include <cstdio>
头这么多,我想使用万能头- 然后搞c++的必须代码
using namespace std;
- 定义主函数
int main(){}
(不会写的,拖出去鸡吡了) - 初始化变量,列表
char a[101],b[101]; //看到两个列表是不是慌了,不用怕,正常 gets(a); int len=strlen(a); int q=0;
- 主函数体就不一 一放出来了
for (int i=len-1; i>=0; i--) //遍历数组a 把数反向存入b数组 { b[q]=a[i]; q++; } for(int i=0;i<len;i++) //正向挨个比较数组a b 如有一个不同则不是回文 输出no结束程序 { if(a[i]!=b[i]) { cout<<"no"; return 0; } } cout<<"yes"; return 0;
不给你,完整代码,除非你求我 错了大哥,我给
- 完整代码
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { char a[101],b[101]; gets(a); int len=strlen(a); int q=0; for (int i=len-1; i>=0; i--) //遍历数组a 把数反向存入b数组 { b[q]=a[i]; q++; } for(int i=0;i<len;i++) //正向挨个比较数组a b 如有一个不同则不是回文 输出no结束程序 { if(a[i]!=b[i]) { cout<<"no"; return 0; } } cout<<"yes"; return 0; }
重头戏来了
- python代码 这边张某给了大家3种方法,效果都一样,放心使用
#for循环 def is_palindromic2(num): count = 0 for i in range(len(num)): count += 1 if count < len(num) // 2: if num[i] != num[len(num) - i - 1]: return False else: break return True #递归 def is_palindromic3(num): # 如果字符串只有0个或1个字符,那么该字符串符合回文的定义 if len(num) < 2: return True # 如果字符串不止一个字符,那么检查字串符的第一项和最后一项是否等同 if num[0] != num[-1]: return False return is_palindromic3(num[1:-1]) #最简单的方法 def is_palindromic4(num): return num == num[::-1] n = input() #输入样例abcdedcba print(is_palindromic2(n)) print(is_palindromic3(n)) print(is_palindromic4(n))
看起来python是不是更简单,错了,学好c++吧,少年,不要怪我没提醒你,CCF更NB class 感谢阅读,祝你编程愉快
- 发布时间:2021-7-18 01:42a.m.
- 发布者:张睿涵(Mr.zhang)
- 不要转载哦
- 发布者:张睿涵(Mr.zhang)
- 前言
判断字符串是否回文,是c++,python,java最简单的字符串应用,蓝桥杯不会考,NOI不会考,但是CCF竟然烤,
-
-2
提供一种跟课堂上不太一样的方法
因为我们要判断这个字符串是不是个回文字符串,也就是说把这个字符串反过来以后两个依然相等,所以我们可以用一个string类型的变量来存储反过来以后的字符串
这种解法发关键点在于如何把字符串反过来
想要翻转一个字符串,可以先准备一个空的string类型的变量(rs),然后从倒数第一个字符开始遍历,将遍历到的字符拼接到rs上,这样就完成翻转了
最后判断两个字符串是否相等,相等输出yes,不相等输出no
#include <iostream> #include <string> using namespace std; int main() { string s,rs = ""; cin >> s; int l = s.length(); for(int i = l - 1;i > -1;i--) rs += s[i]; if(rs == s) cout << "yes"; else cout << "no"; return 0; }
-
-3
解析:
回文字符串定义:顺读和倒读都一样的字符串 设当前字符串为s回文字符串,数据保存在1~n中 那么对于任意一个~~NBA~~的i,都有s[i]等于s[n - i+1]i从1遍历到n/2:如果s[i]不等于s[n - i + 1]: 不是回文,结束程序。 是回文就输出出来! ”康“到这就(>v<你懂的👀️ 😄 )
#include <iostream> #include <cstring> using namespace std; char s[105]; int main() { cin >> (s + 1); int n = strlen(s+1); for (int i = 1;i <= n/2;i++) { if (s[i] != s[n-i+1]) { cout << "no"; return 0; } } cout << "yes"; return 0; }
- 1
信息
- ID
- 294
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 1235
- 已通过
- 628
- 上传者