zoukankan      html  css  js  c++  java
  • 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;
        }
    
    }
    

      

  • 相关阅读:
    POJ 1953 World Cup Noise
    POJ 1995 Raising Modulo Numbers (快速幂取余)
    poj 1256 Anagram
    POJ 1218 THE DRUNK JAILER
    POJ 1316 Self Numbers
    POJ 1663 Number Steps
    POJ 1664 放苹果
    如何查看DIV被设置什么CSS样式
    独行DIV自适应宽度布局CSS实例与扩大应用范围
    python 从入门到精通教程一:[1]Hello,world!
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/8619747.html
Copyright © 2011-2022 走看看