✅ 操作成功!

华为机试

发布时间:2023-06-05 作者:admin 来源:文学

华为机试

华为机试

安卓面试-鸽巢原理

2023年2月17日发(作者:基站建设)

华为机试题Java实现(附详解)

华为机试题Java实现(附详解,持续更新)

本⽂章是我做的华为机试题⽬,有些是⾃⼰写的,有些是参考解答,都做了详细备注,都能看懂,有时间陆陆续更新完。

1.计算⼀个字符串最后⼀个单词长度,单词⽤空格隔开

思路:本题使⽤split()⽅法将字符串按空格切割成字符串数组保存即可,数组最后⼀个元素(字符串)的长度即为答案。

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

Stringstrs=ne();

lengthOfLastString(strs);

}

staticvoidlengthOfLastString(Stringstrs){

String[]arr=("");

n(arr[-1].toCharArray().length);

}

要注意的是:1.若String结尾是空格,可以使⽤split("",-1)解决,原⽣split是不识别末尾元素的;

2.特殊分割要使⽤转译符

2.写出⼀个程序,接受⼀个由字母和数字组成的字符串,和⼀个字符,然后输出输⼊输⼊字符串中含有该字符的个数。不区分⼤⼩写

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

Stringstrs=ne();

//将输⼊的字符串转成char型便于⽐较

charch1=ne().charAt(0);

intcount=0;

char[]arrs=Array();

for(charch:arrs){

//char类型没有忽略⼤⼩写⽐较,但是可以直接将都转成⼤写或者⼩写⽐较

if(rCase(ch)==rCase(ch1)){

count++;

}

}

n(count);

}

}

3.明明想在学校中请⼀些同学⼀起做⼀项问卷调查,为了实验的客观性,他先⽤计算机⽣成了N个1到1000之间的随机整数

(N≤1000),对于其中重复的数字,只保留⼀个,把其余相同的数去掉,不同的数对应着不同的学⽣的学号。然后再把这些数从⼩到⼤

排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的⼯作(同⼀个测试⽤例⾥可能会有多组数据,希望⼤家能

正确处理)

r;

t;

publicclassMain{

//要求不重复-set

//不重复的同时还要有序-TreeSet

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

//不接收到停⽌符号就⼀直输⼊,默认键盘crtl+z停⽌,或者给终⽌符t(‘0’)

while(t()){

intn=t();//随机数由输⼊产⽣

TreeSettreeSet=newTreeSet();//要装包装类型

if(n>0){

for(inti=0;i

//将由输⼊产⽣的随机数加⼊set,重复的加不进,默认按照⾃然排序

(t());

}

}

for(Integeri:treeSet){

n(i);

}

}

}

}

4.连续输⼊字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;长度不是8整数倍的字符串请在后⾯补数字0,空字符串不处

理。

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

while(t()){

Stringstrs=ne();

if(()%8!=0){//长度不够8的整数倍补7个0

strs=strs+"0000000";

}

while(()>=8){

//现在字符串长度肯定⼤于等于8,将其8个8个截取,最后扔的肯定是补得0,没有影响

n(ing(0,8));//⼤于8,肯定够截取

//substring(begin,end),从begin位到end长度分割字符串,不够报错

strs=ing(8);

}

}

}

}

5.写出⼀个程序,接受⼀个⼗六进制的数,输出该数值的⼗进制表⽰。(多组同时输⼊)

a.⽅法⼀

使⽤BigInteger

BigInteger:Java⾥⼤数值类,理论上数值不会越界(和计算机内存相关),是个String,但是不能直接赋值,必须调⽤构造器,⾥⾯提供了⼀些⽅法例如add等

(运算⽤⽅法,不是+,-,*,/)。

//16进制转10进制

eger;

r;

publicclasssixteethTOten{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

while(t()){

Stringstr16=ne();

n(newBigInteger(str16,16).toString(10));

}

}

}

b.⽅法⼆

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

while(t()){

//为什么截取2,因为⼗六进制数有两种表⽰⽅法,fff,0xfff,第⼆中显然要截取前⾯的标志

Stringstr=().substring(2);

//nt(str,x),将str转成x进制

n(nt(str,16));

}

}

}

//⾃⼰写实现16-10

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

while(t()){

StringBuffersb=newStringBuffer();

(());

//Stringstr=();

Stringstr=e().substring(0,()-2);

charch[]=Array();

intsum=0;

for(inti=0;i<;i++){

if(ch[i]>='A'&&ch[i]<='F'){

sum+=(f(ch[i])-55)*(16,i);

}else{

sum+=(f(ch[i])-48)*(16,i);

}

}

n(sum);

//n(f('6'));

}

**6.题⽬描述

数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进⾏合并,即将相同索引的数值进⾏求和运算,输出按照key值升

序进⾏输出。

输⼊描述:先输⼊键值对的个数然后输⼊成对的index和value值,以空格隔开

输出描述:输出合并后的键值对(多⾏)**

;

r;

p;

publicclassmapQuChong{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

while(t()){

//TreeMap按照Key的⾃然⼤⼩排序

Mapmap=newTreeMap();

intn=t();

for(inti=0;i

intk=t();

intvalue=t();

//如果键已经存在则合并

if(nsKey(k)){

(k,(k)+value);

}else{

//不存在就说明⽆键重复,加⼊map

(k,value);

}

}

//输出map

for(Integerkey:()){

n(key+""+(key));

}

}

}

}

7.输⼊⼀个int型整数,按照从右向左的阅读顺序,返回⼀个不含重复数字的新的整数。

输⼊描述:

输⼊⼀个int型整数

输出描述:

按照从右向左的阅读顺序,返回⼀个不含重复数字的新的整数

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

intnum=t();

intresult=0;

//构建⼀个⼗⼤⼩的数组,将反向遍历的数的下标位置标记成1,每次判断该数组下标位置是否为0,即可判断是否重复

int[]arr=newint[10];

while(num!=0){

//从最后⼀位遍历,反向int

if(arr[num%10]==0){

result=result*10+num%10;//实现从右到左

arr[num%10]++;//将该数字对应下标值置1

num/=10;

}else{

//该位置下标值不为0,说明有重复,直接删除

num/=10;

}

}

n(result);

}

}

8.编写⼀个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换⾏表⽰结束符,不算在字符⾥。不在范围内的

不作统计。注意是不同的字符

r;

publicclassStringBuChong{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

Stringstr=ne();

intcount=0;

for(inti=0;i<();i++){

//判断每⼀个字符是否在范围内,并且是否是唯⼀,indexOf该字符在字符串中⾸次出现的索引位置,lastIndexOf,最后出现位置

if((i)>0&&(i)<127&&

f((i))==i){

count++;

}

}

n(count);

}

}

9.输⼊描述:

输⼊⼀个int整数

输出描述:

将这个整数以字符串的形式逆序输出

r;

publicclassintReverse{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

intnum=t();

Stringstr=num+"";

char[]chars=Array();

char[]rechars=newchar[()];

for(inti=()-1;i>=0;i--){

rechars[()-1-i]=chars[i];

}

//Stringresult=ng();

Stringresult=newString(rechars);

n(result);

}

}

/**

*int转String

*+"";

*StringtoString()

*

*String转int

*publicstaticintparseInt(Strings)

*

*String转Integer

*publicstaticIntergervalueOf(Strings)

*

*String转char[]

*Array()

*

*char[]转String

*string1=newString(chars);

string2=f(chars);

*

*/

10.字符串反转(也可以⽤8的⽅式)

r;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner();

Stringstr=ne();

StringBufferrestr=newStringBuffer(str);

n(e().toString());

}

}

先更新⼗题,后⾯的题⽬要涉及⼀些算法了,整理好了再更新

👁️ 阅读量:0