原题链接:蓝桥杯基础练习VIP-字符串对比
解题思路:
一、先划分大的框架,从整体看 分为length相同和不相同。
二、lengthb不相同只有一种情况,那就是第1种情况。
三、length相同分为三种情况,而这三种情况又分为(大小写相等,和大小写不等两种情况)(情况2,情况3)和完全不等于
(即在长度相等的情况下只要存在有一个不等,而且不是大小写的关系)(情况4)。
四、定义一个flag,判断每一种情况时给它赋值,最后输出。
注意事项:
一定要理清逻辑再写代码。判断2 3种情况时要把fabs()写在后面。因为程序先判断前面的,第四种情况可能也满足fabs(a[i]-b[i])==32,eg:Ba 和bc;
参考代码:
#include<bits/stdc++.h>
using namespace std;
int flag;
string a,b;
int len;
int k;
int _check1(int len) {
int i,j;
for( i=0; i<len; i++) {
if(a[i]!=b[i]&&fabs(a[i]-b[i])!=32) {
k--; //只要有一个不相等,就计数 -1
//最后我只要判断小于0就满足第4种情况,等于0就是完全相等
}
if(a[i]!=b[i] && fabs(a[i]-b[i])==32) {
k++;// 如果满足条件3大小写不同的话,K应该等于len
}
/*if(a[i]==b[i]){
k+=2;//如果满足条件2 完全相等的话,k最后应该是len的两倍
}
*/
}
if(k==0)//如果没有不相等,则K=0
return flag = 2;
if(k<0)
return flag =4;
if(k>0)
return flag =3;
}
int main() {
cin>>a>>b;
int len1 = a.size();
int len2 = b.size();
if(len1 == len2) {
_check1(len1);
printf("%d",flag);
}
else {
flag=1;
printf("%d",flag);
}
return 0;
}0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<bits/stdc++.h> using namespace std; int flag=0,k=0; string a,b; int check(int length) { for(int i=0;i<length;i++) { if(a[i]!=b[i]&&fabs(a[i]-b[i])!=32) { flag=4; return 0; } if(a[i]==b[i]) { k+=2; } else { if(k%2==0) { k=k+1; } } } if(k%2==0) { flag=2; }else{