华为机试.docx
- 文档编号:14373700
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:40
- 大小:25.54KB
华为机试.docx
《华为机试.docx》由会员分享,可在线阅读,更多相关《华为机试.docx(40页珍藏版)》请在冰点文库上搜索。
华为机试
1、字符串最后一个单词长度
题目描述
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,长度小于128。
输出描述:
整数N,最后一个单词的长度。
输入例子:
helloworld
输出例子:
5
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
while(in.hasNext()){
Stringstr=in.nextLine();
Stringstrs[]=str.split("");
intlength=strs.length;
StringlastWord=strs[length-1];
System.out.println(lastWord.length());
}
in.close();
}
}
2、计算字符个数
题目描述
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。
不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
输入例子:
ABCDEFA
输出例子:
1
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Scannerin=newScanner(System.in);
Stringstr=in.nextLine().toUpperCase();
intcount=0;
Stringstr2=in.nextLine().toUpperCase();
charch=str2.charAt(str2.length()-1);
for(inti=0;i chartemp=str.charAt(i); if(temp==ch)count++; } System.out.println(count); in.close(); } } 3、明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。 然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。 请你协助明明完成“去重”与“排序”的工作。 InputParamn输入随机数的个数inputArrayn个随机整数组成的数组ReturnValueOutputArray输出处理后的随机整数注: 测试用例保证输入参数的正确性,答题者无需验证。 输入描述: 输入多行,先输入随机整数的个数,在输入相应个数的整数 输出描述: 返回多行,处理后的结果 输入例子: 11102040326740208930040015 输出例子: 10152032406789300400 提交代码 importjava.util.ArrayList; importjava.util.Arrays; importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); while(in.hasNext()){ intnum=in.nextInt(); ArrayList for(inti=0;i intval=in.nextInt(); if(! list.contains(val)){ list.add(val); } } int[]arry=newint[list.size()]; for(inti=0;i arry[i]=list.get(i); } Monaco,Menlo,Consolas,'CourierNew',monospace;">Arrays.sort(arry); [java]viewplaincopy for(inti=0;i System.out.println(arry[i]); } } } 4、字符串分隔 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc123456789 输出例子: abc000001234567890000000 importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); while(in.hasNext()){ Stringstr1=in.nextLine(); String[]sb1=getStrs(str1); for(inti=0;i System.out.println(sb1[i]); } } in.close(); } privatestaticString[]getStrs(Stringstr) { intlength=str.length(); intcnt=length/8; intmod=length%8; if(mod! =0){ cnt=cnt+1; for(inti=0;i<8-mod;i++){ str+="0"; } } String[]sb=newString[cnt]; for(inti=0,index=0;i sb[i]=(str.substring(index,index+8)); } returnsb; } } 5、进制转换 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 输入例子: 输出例子: 10 importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); while(in.hasNext()){ Stringstring=(String)in.next(); Stringstr=string.substring(2,string.length()); intnum=Integer.valueOf(str,16); //Integernum=Integer.decode(string); System.out.println(num); } in.close(); } } intn1=14; //十进制转成十六进制: Integer.toHexString(n1); //十进制转成八进制 Integer.toOctalString(n1); //十进制转成二进制 Integer.toBinaryString(12); //十六进制转成十进制 Integer.valueOf("FFFF",16).toString(); //十六进制转成二进制 Integer.toBinaryString(Integer.valueOf("FFFF",16)); //十六进制转成八进制 Integer.toOctalString(Integer.valueOf("FFFF",16)); //八进制转成十进制 Integer.valueOf("576",8).toString(); //八进制转成二进制 Integer.toBinaryString(Integer.valueOf("23",8)); //八进制转成十六进制 Integer.toHexString(Integer.valueOf("23",8)); //二进制转十进制 Integer.valueOf("0101",2).toString(); //二进制转八进制 Integer.toOctalString(Integer.parseInt("0101",2)); //二进制转十六进制 Integer.toHexString(Integer.parseInt("0101",2)); 6、编程总结 1、Scanner类 重用方法: close() delimiter() useDelimiter() hasNext(); next() nextLine() nextInt() skip() //从控制台读取字符串 //hasNext()方法判断Sanner实例中的buffer中是否还有没有被读取的数据,有则返回true,没有则返回false //next()方法读取以空白字符串结束的字符串(即""、'\t'、'\f'、'\r'或'\n') //nextline()方法读取一整行文本,已读取按下enter回车键为结束的字符串 //useDelimiter()可以设置新的分隔符模式 //标记与期望的类型不匹配,抛出运行时异常java.util.InputMistmatchException //StringlineSeparator=System.getProperty("line.separator")得到特定平台上的行分隔符 //行分隔符Linux\r\nWindows\n //重要警告: 为了防止读取错误,不要在标记读取方法nextInt()等,后面调用nextLine() 2、String类 常用方法 charAt contains() copyValueOf(char[]data) getBytes() letgth() split() toLowerCase() toCharArray() valueOf(doubled) 3、Comparable接口 定义了compareTo方法 java类库中许多类定义了对象的自然顺序,Byte,Short,Integer,Long,Double,Character,BigInteger,BigDecimal,Calender,String,Date都实现了comparable接口, java.util.sort(object[]) 1、质数因子 功能: 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为22335) 详细描述: 函数接口说明: publicStringgetResult(longulDataInput) 输入参数: longulDataInput: 输入的正整数 返回值: String [java]viewplaincopy importjava.util.ArrayList; importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); while(in.hasNext()){ longuldataInput=in.nextLong(); Stringstr=getResult(uldataInput); System.out.println(str); } } publicstaticStringgetResult(longulDataInput){ ArrayList Stringstr=""; longtempInput=ulDataInput; for(longi=2;i*i while(tempInput%i==0&&tempInput! =1){ list.add(i); tempInput=tempInput/i; } } if(tempInput! =1||tempInput==ulDataInput){ list.add(tempInput); } for(intj=0;j str+=list.get(j)+""; } returnstr; } } 2、取近似值 写出一个程序,接受一个浮点数值,输出该数值的近似整数值。 如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 importjava.util.Scanner; publicclassMain{ publicstaticvoid main(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); while(in.hasNext()){ doubleval=in.nextDouble(); System.out.println(Math.round(val)); } in.close(); } } 添加笔记 3、合并表记录 数据表记录包含表索引和数值。 请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和 函数说明: publicintmergeRecord(ListoriList,ListrstList) 数据表记录包含表索引和数值。 请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。 @paramoriList原始表记录。 以List方式存放,TableRecord定义见TableRecord.java, 调用者无需对leRecord.java做任何修改 @paramrstList合并后的表记录,以List方式存放 @return返回合并后表的个数 [java]viewplaincopy importjava.util.SortedMap; importjava.util.Scanner; importjava.util.TreeMap; publicclassMain{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); SortedMap while(in.hasNext()){ intnum=in.nextInt(); for(inti=0;i intkey=in.nextInt(); intval=in.nextInt(); if(hashMap.containsKey(key)){ intmyval=hashMap.get(key)+val; hashMap.put(key,myval); }else{ hashMap.put(key,val); } } for(Integerkey: hashMap.keySet()){ System.out.println(key+""+hashMap.get(key)); } } in.close(); } } 4、提取不重复整数 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 [java]viewplaincopy importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); StringnewStr=""; while(in.hasNext()){ intnum=in.nextInt(); Stringstr=num+""; for(inti=str.length()-1;i>=0;i--){ charch=str.charAt(i); StringtempStr=ch+""; if(! newStr.contains(tempStr)){ newStr+=tempStr; } } System.out.println(newStr); } in.close(); } } 5、字符个数统计 编写一个函数,计算字符串中含有的不同字符的个数。 字符在ACSII码范围内(0~127)。 不在范围内的不作统计。 [java]viewplaincopy importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); while(in.hasNext()){ Stringstr=in.nextLine(); System.out.println(CountCharNum(str)+""); } } publicstaticintCountCharNum(Stringstr){ intcnt=0; int[]arrs=newint[128]; for(inti=0;i charch=str.charAt(i); if(arrs[ch]==0){ cnt++; arrs[ch]=1; } } returncnt; } } 二、总结 1、常用类 Math类 三角函数方法 指数函数方法 取整方法 ceil()向上接近整数 floor()向下接近整数 rint()最近的整数 round()返回为int或long random方法 集合 java集合框架支持两种容器 1、Collection: 一种是为了存储一个元素集合,简称集合 2、Map: 另一种是为了存储键/值对,简称为图 集合(Collection)有三种类型的集合 1、规则集Set: 存储一组不重复的元素 (1)HashSet散列集: 不可预知的顺序存储元素 (2)LinkedHashSet链式散列集: 以元素被插入的顺序存储元素 (3)TreeSet树形集: 存储以排好序的元素。 (例如升序降序) 2、线性表List: 有元素构造的有序集合 (1)ArrayList数组线性表: 查找比较方便,但插入删除的复制度为O(N) (2)LinkedList链表: 可以在任意位置插入数据O (1) 3、队列Queue: 存储先进先出方式处理对象 4、Vector接口实现了List接口,在java2中,Vector和ArrayList是一样的,所不同的是它所包含的访问和就向量的方法是同步的, Stack类扩张了Vector类,并且提供了几种对栈进行操作的方法 java集合框架所有类都实现了java.lang.cloneable和java.io.serializable接口,都是可复制和可序列化的 java集合框架所有类都包含两个构造函数,一个空的参数,一个Collection参数 图(Map) 1、HashMap散列图: 不需要保持图中元素的顺序,就使用HashMap 2、LinkedHaspMap链式散列图: 需要保持图中元素的插入顺序或访问顺序,就使用LinkedHashMap 3、TreeMap树形散列图: 需要使图按照键值排序,就使用TreeMap SortedMap类 2、算法 统计字符个数函数中,用到了 int[]arrs=newint[124] if(arrs[chvalue]==0) cnt++; arrs[chvalue]=1; 3、Comparor接口和Comparable接口的比较 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为