23 条题解
-
21
今天又是快乐的一天呐!上来一个开门红!看看思路吧~
- 首先用 a 存储原来的字符串,用 b 存储回文的字符串
- 先输入 a(讲过输入的了,就不重复讲了)
- 然后将 a 回文(倒过来,反着遍历列表)用 i 表示 a 的索引,用 s 表示 b 的索引
- 再一次遍历 a 和 b,中间只要有一次不一样就(咔嚓,你懂得)输出 FALSE
- 笑到最后了的话 输出 TRUE
#include <bits/stdc++.h> using namespace std; int main() { int s = 0; char a[100], b[100]; cin.getline(a, 100, '.'); for (int i = strlen(a) - 1; i >= 0; i--) { b[s] = a[i]; s += 1; } for (int i = 0; i < strlen(a); i++) { if (a[i] != b[i]) { cout << "FALSE" << endl; return 0; } } cout << "TRUE" << endl; return 0; }
-
12
简简单单,轻轻松松,只要掌握了数位的规律并用上布尔变量判断情况就行了~
已AC,请放心食用
#include <bits/stdc++.h> using namespace std; int main() { string n; bool flag = true; cin >> n; for (int i = 0; i < (n.length() - 1) / 2; i++) { if (n[i] != n[n.length() - 2 - i]) { flag = false; break; } } if (flag) { cout << "TRUE"; } else { cout << "FALSE"; } return 0; }
养成好习惯,看完点个赞!
-
8
int s = 0; //统计不相等个数 for (int i = 0; i < s.length() - 1; i++) //注意最后一个字符是.,所以减1 //根据定义就是如果第一个==倒数第一个,第二个等于倒数第二个,这样进行下去就是回文, //如果哪个不相等自然不是回文。 //这里因为有一个.的缘故,所以对应的关系是 i和 s.length()-2-i在判断是否相等 { if (s[i] != s[s.length() - 2 - i]) { s++; //如果不相等,个数加1 } } if (s == 0) // 没有不相等的就是回文 { cout << "TRUE"; } else { cout << "FALSE"; }
-
6
还是考察字符串的题
比上一道简单多了
首先呢,我还是需要我的函数同学来帮忙 把字符一个个反过来存储 来到主函数
用getline终止读取,防止RE 调用一下
OK啦!!!!
#include <bits/stdc++.h> using namespace std; string rev(string s){//编写翻转函数 string s1; for (int i = s.length() - 1; i >= 0; i--){ s1=s1+s[i]; } return s1; } int main(){ string s; getline(cin,s,'.');//读到‘.’终止 string a=rev(s);//调用函数,翻转字符串 if (s==a) cout<<"TRUE";//如果字符串倒过来一样,输出TRUE else cout<<"FALSE";//否则输出FALSE }
-
4
#include <bits/stdc++.h> using namespace std; int main() { int s = 0; char a[100], b[100]; cin.getline(a, 100, '.'); for (int i = strlen(a) - 1; i >= 0; i--) { b[s] = a[i]; s += 1; } for (int i = 0; i < strlen(a); i++) { if (a[i] != b[i]) { cout << "FALSE" << endl; return 0; } } cout << "TRUE" << endl; return 0; }
-
3
#include <iostream> using namespace std; int main() { string a,b,c;//定义3个字符串型变量 cin >> a;//输入初始字符串 for (int i = 0;i < a.length() - 1;i++)//因为最后一个要去除,所以是i < a.length() - 1 { c += a[i]; }//全部循环结束后,c就是去除最后一位的a for (int i = c.length() - 1;i >= 0;i--)//将顺序反过来输入 { b += c[i];//从最后一位开始输入c的每一位 }//全部循环结束后,b就是反过来的c if (c == b)//如果c反过来与c相同,那c就是回文数 { cout << "TRUE"; } else//否则不是 { cout << "FALSE"; } return 0; }
-
2
可能有点笨拙 主要就是把a倒过来就OK
核心代码: b[i] = a[n-2-i];
#include <iostream> using namespace std; char a[101],b[101]; int main() { string s; cin >> s; int n =s.length(); for (int i = 0;i < n -1;i++) { a[i] = s[i]; } for(int i = 0;i < n -1;i++) { b[i] = a[n-2-i]; } for (int i = 0;i < n -1;i++) { if(a[i] != b[i]) { cout << "FALSE"; return 0; } } cout << "TRUE"; }
-
1
首先用 a 存储原来的字符串,用 b 存储回文的字符串 先输入 a(讲过输入的了,就不重复讲了) 然后将 a 回文(倒过来,反着遍历列表)用 i 表示 a 的索引,用 s 表示 b 的索引 再一次遍历 a 和 b,中间只要有一次不一样就(咔嚓,你懂得)输出 FALSE 笑到最后了的话 输出 TRUE 不讲废话了,上AC代码!
#include <bits/stdc++.h> using namespace std; int main() { int s = 0; char a[100], b[100]; cin.getline(a, 100, '.'); for (int i = strlen(a) - 1; i >= 0; i--) { b[s] = a[i]; s += 1; } for (int i = 0; i < strlen(a); i++) { if (a[i] != b[i]) { cout << "FALSE" << endl; return 0; } } cout << "TRUE" << endl; return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int main() { int s = 0; char a[100], b[100]; cin.getline(a, 100, '.'); for (int i = strlen(a) - 1; i >= 0; i--) { b[s] = a[i]; s += 1; } for (int i = 0; i < strlen(a); i++) { if (a[i] != b[i]) { cout << "FALSE" << endl; return 0; } } cout << "TRUE" << endl; return 0; }
-
-1
话不多说,上代码!😄 `
#include <iostream> using namespace std; int main() { string a,b,c;//定义3个字符串型变量 cin >> a;//输入初始字符串 for (int i = 0;i < a.length() - 1;i++)//因为最后一个要去除,所以是i < a.length() - 1 { c += a[i]; }//全部循环结束后,c就是去除最后一位的a for (int i = c.length() - 1;i >= 0;i--)//将顺序反过来输入 { b += c[i];//从最后一位开始输入c的每一位 }//全部循环结束后,b就是反过来的c if (c == b)//如果c反过来与c相同,那c就是回文数 { cout << "TRUE"; } else//否则不是 { cout << "FALSE"; } return 0; }
喜欢的记得点个❤️
信息
- ID
- 99
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 2380
- 已通过
- 1117
- 上传者