2021-08-16阿里校招笔试:编写编译器,计算代码字节数

2021-08-16 笔试情况

题目:编写一个编译器,结算内存所需要的字节数  
请输入一个字符串,编译出代码所需要的字节数,如:int a[10][10][10],k,m; 
int 类型所占4个字节
long 类型所占8个字节
char 类型所占1个字节

输入描述:
int a[10][10][10],k,m;  
输出描述:
输入格式为 变量类型+一个空格+变量;
输出结果:
4008
(10 x 10 x 10 + 1 + 1) x 4 = 4008

个人写的很丑很臭代码:

package kaoshi;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 王一宁
 * @date 2021/8/16 18:34
 * 【供阿里笔试 考试使用】
 */
public class KaoShi {
    public static void main(String[] args) {
        int res = 0; //定义字节数
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String substring = s.substring(0, s.length() - 1);
        String[] chars1 = substring.split(" ");

        // 切割chars1
        String[] splitchars1 = chars1[1].split(",");
        String stringnum = "";
        int num = 0; // 数组乘几次
        int baseNum = 0;// 求次方的底数

        if (chars1[1].contains("[")){
            for (int i = 0; i < splitchars1.length; i++) {
                if (splitchars1[i].contains("[")){
                    stringnum = splitchars1[i];
                }
            }
            int i1 = stringnum.indexOf("[");
            System.out.println("第一次出现 [ 的下标: "+i1);
            int i2 = stringnum.indexOf("]");
            System.out.println("第一次出现 ] 的下标: "+i2);
            String substringnum = stringnum.substring(i1 + 1, i2);
            baseNum = Integer.parseInt(substringnum);
            System.out.println("i3的数值为: "+baseNum);
            if (chars1[0].equals("int")) {
                for (int i = 0; i < stringnum.length(); i++) {
                    char c = stringnum.charAt(i);
                    if (c == '['){
                        num = num + 1;
                    }
                }
                System.out.println("数值部分需要进行几次乘积:"+num);
                baseNum = (int) Math.pow(baseNum,num);
                res = (baseNum + splitchars1.length-1)*4;
                System.out.println("最终字节大小为: "+ res);
            }else if(chars1[0].equals("long")){
                for (int i = 0; i < stringnum.length(); i++) {
                    char c = stringnum.charAt(i);
                    if (c == '['){
                        num = num + 1;
                    }
                }
                System.out.println("数值部分需要进行几次乘积:"+num);
                baseNum = (int) Math.pow(baseNum,num);
                res = (baseNum + splitchars1.length-1)*8;
                System.out.println("最终字节大小为: "+ res);
            }else {
                for (int i = 0; i < stringnum.length(); i++) {
                    char c = stringnum.charAt(i);
                    if (c == '['){
                        num = num + 1;
                    }
                }
                System.out.println("数值部分需要进行几次乘积:"+num);
                baseNum = (int) Math.pow(baseNum,num);
                res = baseNum + splitchars1.length-1;
                System.out.println("最终字节大小为: "+ res);
            }

        }else{
            if (chars1[0].equals("int")){
                res = splitchars1.length * 4;
                System.out.println(res);
            }else if (chars1[0].equals("long")){
                res = splitchars1.length * 8;
                System.out.println(res);
            }else if (chars1[0].equals("char")){
                res = splitchars1.length;
                System.out.println(res);
            }
        }
    }
}

输出结果测试:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#阿里笔试##阿里巴巴##笔经##校招#
全部评论

相关推荐

头像
06-07 22:52
已编辑
东南大学 Java
**一面&nbsp;&nbsp;10:00**一道简单的算法题&nbsp;模拟过程即可&nbsp;(20min左右)**实验室横向项目** 资源模型是怎么构建的&nbsp;输入输出参数是什么项目遇到的困难(工程上的&nbsp;端口暴露&nbsp;+&nbsp;vcuda部署)按说实现虚拟化之后,直接部署深度学习应用即可,为何还要进行资源预测呢**论坛项目**了解java中的注解吗?注解在什么时候会失效?Spring的注解在什么时候会失效?Spring&nbsp;MVC指什么?解释一下用户登陆校验是怎么实现的?(这里提到了使用session存放用户信息,&nbsp;在cookie中存放用户哈希过的key)项目中redis怎么使用的?构建整个项目的逻辑是什么?(谈到了数据库设计)数据库分表有什么原则?在有些时候&nbsp;需要数据库表内元素或不同表间存在耦合&nbsp;能说说你能想到对应的场景(反范式设计)为什么选择kafka?&nbsp;&nbsp;&nbsp;&nbsp;技术选型的逻辑是?kafka在项目中解决了什么样的问题?项目在工程中被归类为哪些文件夹?(Controller/Service/Dao)乐观锁悲观锁了解吗&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计模式了解吗?说出你所知道的**无反问**二十分钟后收到通过短信**主管面&nbsp;15:00**学生时代遇到比较大的问题兴趣爱好是什么对华为的工作强度有了解吗对华为的印象是怎么样的&nbsp;为什么想来华为实习你的优点和缺点感到焦虑会怎么缓解意向地点是深圳吗**反问** 是在xx部门吗?部门用的技术栈是?
查看42道真题和解析
点赞 评论 收藏
分享
3 7 评论
分享
牛客网
牛客企业服务