原题链接:蓝桥杯基础练习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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复