• HW2018校招软件类笔试题


    一、

    1、题目

    输入一个字符串,输出字符串中最长的数字串。如果有多个数字串长度相等且都是最长的,则按照字符串顺序输出最后一个最长的数字串。

    2、解答

    【code】

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                //输入字符串
                String s = sc.nextLine();
    
                // 替换字符串中的字母为空格
                String s1 = s.replaceAll("[a-z]", " ");
                // 分割字符串
                String[] strArray = s1.split(" ");
                ///创建HashMap,存储分割的子数字串,key存储长度,value存储数字串
                HashMap<Integer, String> hashMap = new HashMap<>();
    
                //把字符串中的各个子数字串存入linkedHashMap,key存储长度,value存储数字串.在map中,key不能重复,如果有相同的key,后面添加的值会覆盖前面添加的值
                for (int i = 0; i < strArray.length; i++) {
                    if ((strArray[i].length() != 0) && (strArray[i].charAt(0) != ' ')) {
                        hashMap.put(strArray[i].length(), strArray[i]);
                    }
                }
    
                //输出最长的数字串
                int length = 0;
                String num = "";
                for (Integer key : hashMap.keySet()) {
                    if (key >= length) {
                        length = key;
                        num = hashMap.get(key);
                    }
                }
                System.out.println(num + "," + length);
    
            }
            sc.close();
        }
    }
                
    

    二、

    1、题目

    输入字节数组长度uiIutputLen, 如:3;

    输入字节数组aInputByte,如: 0x62 0x80 0x00 ;

    输入解析数值个数uiElementNum,如:2

    输入第一个解析数值的位数,如:4

    输入第一个解析数值的位数,如:5

    输出解析出的第一个数值:5

    输出解析出的第二个数值:6

    2、输入输出描述

    输入:

    3
    0x62 0x80  0x00
    2
    4
    5

    输出:

    6
    5
    

    2、解答

    【code】

    import java.util.Scanner;
    
    public class Main1 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                //输入字节数组长度uiIutputLen
                int uiIutputLen = sc.nextInt();
    
                //输入字节数组aInputByte:  0x62 0x80  0x00
                String str = "";
                String[] aInputByte = new String[uiIutputLen];
                for (int i = 0; i < aInputByte.length; i++) {
                    aInputByte[i] = sc.next();
                    str += aInputByte[i];
                }
    
                //输入解析数值个数uiElementNum
                int uiElementNum = sc.nextInt();
    
                //输入各个解析数值的位数
                int[] array = new int[uiElementNum];
                for (int i = 0; i < array.length; i++) {
                    array[i] = sc.nextInt();
                }
    
                //字节数组aInputByte[3]为{0x62, 0x80, 0x00},对应二进制为“0110 0010, 1000 0000, 0000 0000”;
    
                //去掉16进制数前的0x
                String newStr = str.replaceAll("0x", " ");
                String[] strArray = newStr.split(" ");
    
                //把16进制数转换成二进制数,并且连接到一起
                String binaryString = "";
                for (int i = 0; i < strArray.length; i++) {
                    if ((strArray[i].length() != 0) && (strArray[i].charAt(0) != ' ')) {
                        binaryString += hexString2binaryString(strArray[i]);
                    }
                }
    
                //二进制数转十进制,输出结果
                int begin = 0;
                int end = array[0];
    
                for (int i = 0; i < uiElementNum; i++) {
                    String s = binaryString.substring(begin, end);
                    System.out.println(Integer.parseInt(s, 2));
    
                    begin = end;
    
                    //判断有没有超出数组范围
                    if ((i + 1) >= uiElementNum) {
                        break;
                    }
    
                    end = array[i + 1] + begin;
    
                }
    
            }
            sc.close();
        }
    
    
        //16进制转2进制
        public static String hexString2binaryString(String hexString) {
            if (hexString == null || hexString.length() % 2 != 0)
                return null;
            String bString = "", tmp;
            for (int i = 0; i < hexString.length(); i++) {
                tmp = "0000"
                        + Integer.toBinaryString(Integer.parseInt(hexString
                        .substring(i, i + 1), 16));
                bString += tmp.substring(tmp.length() - 4);
            }
            return bString;
        }
    
    }
    

      

  • 相关阅读:
    基于visual Studio2013解决面试题之1307二分查找
    基于visual Studio2013解决面试题之1306奇偶位数交换
    基于visual Studio2013解决面试题之1305字符串所有子集
    cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄控制坦克移动
    cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄的显示
    cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
    基于visual Studio2013解决面试题之1204大数组查找
    6.6 判断字符串是不是字母类型的
    6.4 从字符串中删除不需要的字符
    6.3 计算字符在字符串中出现的次数
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/8619747.html
Copyright © 2020-2023  润新知