
蓝桥杯_翻转_C题目描述题解解题思路思路代码实现题目描述蓝桥杯_翻转原题链接题解解题思路思路1、S 和 T 都是由 多个0或1组合而成① 数据输入第一行输入一个整数 D 代表有 D 组 S和T 的组合接下来 2D 行 依此代表[T1,S1,T2,S2,…,TD,SD]② 数据处理010 - 000, 101-111可转换。判断 S 是否可以转换为 T若可转换需进行几次 01 变换可通过 S 和 T 的挨个比较来进行判断:若 S[i]T[i] 则继续进行判断。若 S[i]!T[i] 则看S[i] 是否满足转换条件 (S[i]!S[i-1],S[i]!S[i1]) ,满足则转换S[i],最后看S是否与T相等来判断是否可以转换。代码实现#includeiostream// 引入输入输出库#includestring// 引入字符串库usingnamespacestd;// 使用标准命名空间intmain(intargc,charconst*argv[]){intD;// 用于存储测试用例的数量cinD;// 从标准输入读取测试用例数量intflag0;// 初始化一个标识变量这里并未使用// 循环处理每一个测试用例for(inti0;iD;i){string S,T;// 声明两个字符串 S 和 TcinTS;// 从输入读取两个字符串 T 和 SintlenS.size();// 获取字符串 S 的长度// 如果两个字符串相同输出 0表示不需要任何变换if(ST){cout0endl;// 输出 0continue;// 跳过后续代码进入下一次循环}// 如果 S 和 T 的首尾字符不同输出 -1表示无法通过变换匹配if(S[0]!T[0]||S[len-1]!T[len-1]){cout-1endl;// 输出 -1continue;// 跳过后续代码进入下一次循环}intcount0;// 计数器用于记录所需变换的次数// 遍历字符串 S 的中间字符不包括首尾for(inti1;ilen-1;i){// 如果当前字符 S[i] 不等于 T[i]if(S[i]!T[i]){// 检查当前字符 S[i] 的两侧字符是否与其不同if(S[i-1]!S[i]S[i1]!S[i]){// 如果是则将 S[i] 更改为 S[i-1]S[i]S[i-1];count;// 记录变换次数}else{break;// 如果不满足停止变换}}}// 检查经过变换后 S 是否与 T 相等if(ST){coutcountendl;// 输出变换次数}else{cout-1endl;// 输出 -1表示无法匹配}}return0;// 主函数返回 0表示程序正常结束}蓝桥杯_翻转_原题链接欢迎大家和我沟通交流(✿◠‿◠)