阿里2021秋招笔试(8.28)——开发岗「建议收藏」

阿里2021秋招笔试(8.28)——开发岗「建议收藏」一、字符串翻转对于一个01字符串,每次只能交换任意两个元素把一个0变成1或者把一个1变成0翻转整个串代码:A了0.7importjava.util.Scanner;/***CreatedbyIntelliJIDEA.**@Author:张志浩ZhangZhihao*@Email:3382885270@qq.com*@Date:2020/8/28*@Time:19:13*@Version:1.0*@Description:

大家好,又见面了,我是你们的朋友全栈君。

前言

阿里笔试比字节还难,如果你能 A 0-1道,那么你是个努力的臭弟弟,如果你能 A 一道,人上人,能 A 两道,你一定是Acmer。
祝所有秋招的同学offer拿到手软

在这里插入图片描述

如果你从本文中学习到丝毫知识,那么请您点点关注、点赞、评论和收藏
大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博客为:爱做梦的鱼https://zihao.blog.csdn.net/,微信公众号、微信视频号为【程序猿干货铺】,qq交流群为:1107710098
程序猿干货铺

一、字符串翻转

对于一个01字符串,每次只能

  1. 交换任意两个元素
  2. 把一个0变成1或者把一个1变成0
  3. 翻转整个串

代码:A了0.7

import java.util.Scanner;

/** * Created by IntelliJ IDEA. * * @Author: 张志浩 Zhang Zhihao * @Email: 3382885270@qq.com * @Date: 2020/8/28 * @Time: 19:13 * @Version: 1.0 * @Description: Description */
public class First { 
   
    public static void main(String[] args) { 
   
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String s = sc.next();
        String t = sc.next();
        sc.close();
        int a1 = 0, a2 = 0, t1 = 0, t2 = 0;
        for (int i = 0; i < n; i++) { 
   
            char p1 = s.charAt(i), p2 = t.charAt(i);
            if (p1 != p2) { 
   
                if (p1 != '0') t1++;
                else t2++;
            }
        }
        int tmp = 0;
        if (t1 < t2) { 
   
            tmp = t1;
            t1 = t2;
            t2 = tmp;
        }

        a1 = t1;
        t1 = 0;
        t2 = 0;

        for (int i = 0; i < n; i++) { 
   
            char p1 = s.charAt(i), p2 = t.charAt(n - i - 1);
            if (p1 != p2) { 
   
                if (p1 == '0') t1++;
                else t2++;
            }
        }
        if (t1 < t2) { 
   
            tmp = t1;
            t1 = t2;
            t2 = tmp;
        }
        a2 = t1 + t2;
        System.out.println(Math.min(a1, a2));
    }
}

二、数字排列

给定两个数 nm,对 n 中的数重新排列,计算出经过重新排列后所得到的数中满足不含有前导零并且能够整除 m 的数字有多少个?
例如,n = 520,那么重新排列后:520,502,250,205,025,052,能被 m = 2整除的,并且无前导零的为 520,502,250三个

代码:全A

import java.util.Scanner;

/** * Created by IntelliJ IDEA. * * @Author: 张志浩 Zhang Zhihao * @Email: 3382885270@qq.com * @Date: 2020/8/28 * @Time: 19:42 * @Version: 1.0 * @Description: Description */
public class Second { 
   
    private static long[][] dp;
    private static char[] s;
    private static int m;

    public static void main(String[] args) { 
   
        Scanner sc = new Scanner(System.in);
        s = ("" + sc.nextLong()).toCharArray();
        m = sc.nextInt();
        sc.close();
        dp = new long[(int) Math.pow(2, s.length)][m];
        for (long[] a : dp)
            for (int i = 0; i < a.length; i++)
                a[i] = -1;
        System.out.println(getDP(0, 0));
    }

    private static long getDP(int mask, int mod) { 
   
        if (dp[mask][mod] >= 0)
            return dp[mask][mod];
        if (mask == dp.length - 1) { 
   
            dp[mask][mod] = mod == 0 ? 1 : 0;
            return dp[mask][mod];
        }
        dp[mask][mod] = 0;
        boolean[] used = new boolean[10];
        for (int i = 0; i < s.length; i++)
            if (!used[s[i] - '0'] && (mask | 1 << i) != mask && (mask > 0 || s[i] != '0')) { 
   
                dp[mask][mod] += getDP(mask | 1 << i, (10 * mod + (s[i] - '0')) % m);
                used[s[i] - '0'] = true;
            }
        return dp[mask][mod];
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142239.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS3选择器(全部)[通俗易懂]

    CSS3选择器(全部)[通俗易懂]CSS3选择器再CSS2.1选择器的基础上增加了属性选择器、伪类选择器、过滤选择器,减少了对HTML类名或ID名的依赖,避免了对HTML结构的干扰,让编写代码更加轻松。1,基本选择器(1)标签选择器(类型选择器)      统一定义常用标签的基本样式。​&lt;!DOCTYPEhtml&gt;&lt;htmllang="en"&gt;&lt;head&gt;…

    2022年7月11日
    68
  • js中的闭包[通俗易懂]

    js中的闭包[通俗易懂]闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢?我们都知道,js的作用域分两种,全局和局部,基于我们所熟悉的作用域链相关知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量,反之则不能,也就是说在外层作用域下无法获取内层作用域下的变量,同样在不同的函…

    2022年6月25日
    28
  • bool数组初始化

    bool数组初始化输入memset(boolArray,0,sizeof(Array));头文件是#include;如果初始化为全部false,c++有一个零初始化器(zero-initializer)boolboolArray[ARRAY_SIZE]={0};这个零初始化器是通用的,其他类型的数组也可以通过这个初始化;charmyarray[ARRAY_SIZE]=

    2022年7月18日
    15
  • strtok函数与函数用法实例

    strtok函数与函数用法实例strtok函数简介及运用实例(利用strtok函数分割字符串及单词逆序)

    2025年8月7日
    5
  • 【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法[通俗易懂]

    【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法[通俗易懂]层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法

    2022年6月28日
    33
  • CSDN Chrome插件来了。助开发者提升开发效率,远离996

    插件定位帮助开发者提升开发效率,远离996特点以搜索框为入口,集成开发者常用工具,提升开发效率主要功能如下:支持本地书签、tab页、历史记录搜索集成CSDN搜索结果,本地内容和远程结果无缝集成所有操作都支持快捷键,提升搜索效率他是一个时间转换工具他是一个计算器他是。。。,更多功能正在添加中安装下载安装包浏览器输入地址“chrome://extensions/”进入扩展程序页面,开启开发者模式以下操作任选其一:zip文件安装:点击“加载已解压的扩展程序”按钮,选择已解压

    2022年4月8日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号