一、
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;
}
}