AcWing 2058. 笨拙的手指(每日一题)

大家好 我是寸铁

如果你觉得这篇题解对你有用,可以动动手点个赞或关注,谢谢~

题目描述

AcWing 2058. 笨拙的手指(每日一题)_第1张图片

输入的第一串字母,存在一位错误。
输入的第二串字母,存在一位错误。
答案保证唯一解
我们需要去枚举每一位,找到二进制三进制下转为十进制的数的交集。
看到这里如果直接暴力枚举,时间是10的9次方乘上log10的9次方大于10的8次方,必然超时。
所以需要改变枚举的方式,由于a、b均存在一位错误,我们就枚举a的每一位的不同数,把他加到set中,再在枚举b时侯,与set进行一个判断,判断在set中是否存在这个a转换的十进制数,存在则说明成立,输出转为10进制的数字即可。

进制转换

我们在读入字符串的时候,字符数组存的是顺序存储,而在日常计算进制转换的时候是逆序计算
所以我们通过移位的操作去计算字符数组中的进制转换数,如下图所示:
AcWing 2058. 笨拙的手指(每日一题)_第2张图片

Accode

import java.util.*;
public class Main{
    public static int get(char []a,int b){
        int res=0;
        for(int i=0;i<a.length;i++){
            res=res*b+(a[i]-'0');//将n进制的数字转换为十进制的数
        }
        return res;
        
    }
    
    public static void main(String []args){
        Set <Integer> set = new HashSet<>();//存储a数组的元素
        Scanner in =  new Scanner(System.in);
        String s1=in.next();
        String s2=in.next();
        char []a=s1.toCharArray();
        char []b=s2.toCharArray();
        for(int i=0;i<a.length;i++){
            a[i]^=1;//将0变成1,将0变成1
            set.add(get(a,2));//将二进制的数转换为十进制的数
            a[i]^=1;
            //只需将枚举的字母变化即可,再将本位的数进行还原,不去影响后面的运算结果。
        }
        for(int i=0;i<b.length;i++){
             char t=b[i];
             //先用字符变量存储枚举的字母
             //这么做的目的是便于后面字符的还原。
        for(char j='0';j<='2';j++){
            if(t!=j){
                b[i]=j;
                //将枚举的字母进行处理
                int x=get(b,3);//三进制的数字转换为十进制的数字
                if(set.contains(x)){
                    System.out.println(x);
                    return;//保证唯一解
                }
            }
        }
        b[i]=t;//还原字符
    }
}
}

往期回顾

不清楚蓝桥杯考什么的点点下方

考点秘籍

想背纯享模版的伙伴们点点下方

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

蓝桥杯省一你一定不能错过的模板大全(第三期)

蓝桥杯省一你一定不能错过的模板大全(第四期)!!!

想背注释模版的伙伴们点点下方

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题 第六期(求阶乘)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

蓝桥杯每日N题 (消灭老鼠)

蓝桥杯每日N题(杨辉三角形)

蓝桥杯每日N题 (砝码称重)

蓝桥杯上岸每日N题(鸡尾酒)

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方

填空题

竞赛干货

算法竞赛字符串常用操作大全

蓝桥杯上岸必刷!!!(模拟/枚举专题)

蓝桥杯上岸必背!!! (第三期 DP)

蓝桥杯上岸必背!!!(第四期DFS)

蓝桥杯上岸必背!!!(第五期BFS)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第七期 最短路算法)

蓝桥杯上岸必背!!!(第八期 简单数论)

蓝桥杯上岸必刷!!!(进制、数位专题)

蓝桥杯上岸考点清单 (冲刺版)!!!

蓝桥杯上岸必背模板 (纯享版)

你可能感兴趣的:(每日一题,蓝桥杯上岸,java,算法,蓝桥杯,模板,leetcode,数据结构)