华为oj题目(java版)
2016-01-25 13:11
531 查看
趁着临近过年,公司工作不忙,去刷了一下华为oj题目,特此记录一下。
题目地址:我是在牛客网上刷的题,地址:http://www.nowcoder.com/ta/huawei
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输出描述:
输入例子:
输出例子:
个人解答:
题目2:
计算字符串最后一个单词的长度,单词以空格隔开。
知识点2:空格符分割:"\\s"或者"\\s+"
题目3:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
这道题另一个思路直接用treeMap特性,但是很奇怪一直通不过,最后用上面方式就可以
题目4:
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。
思路1:用java自带方法
题目4:
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
这道题刚开始没好的思路,后来发现添加数字0不用考虑那么复杂,先加满8个0,再做截取就行
知识点:string
题目5:
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
题目6:
写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
此题比较简单,主要利用了jdk math自带的round方法
题目7:
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
知识点:java获取ascii码可用Integer.valueOf();
扩展:另一种方法不用set,直接拼接字符串可能更高效。
题目地址:我是在牛客网上刷的题,地址:http://www.nowcoder.com/ta/huawei
题目1:
题目描述:写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
输入例子:
ABCDEF A
输出例子:
1
个人解答:
import java.util.Scanner; public class Main{ public static void main(String[] args) { int count = 0; Scanner sc=new Scanner(System.in); String str = sc.nextLine(); String br = sc.nextLine(); String string1=str.toUpperCase(); String br1=br.toUpperCase(); char a = br1.charAt(0); for(int i=0;i<string1.length();i++) { if(string1.charAt(i)==a) count++; } System.out.println(count); } }
题目2:
题目描述
计算字符串最后一个单词的长度,单词以空格隔开。import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); String[] strArray = str.split("\\s"); int size = strArray.length; System.out.println(strArray[size-1].length()); } }知识点1:字符串长度用length(),数组长度用length
知识点2:空格符分割:"\\s"或者"\\s+"
题目3:
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。import java.util.*; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNextInt()){ Set<Integer> set = new HashSet<>(); int n = in.nextInt(); for(int i=0;i<n;i++){ set.add(in.nextInt()); } List<Integer> list = new ArrayList<>(); list.addAll(set); Collections.sort(list); for(int i:list){ System.out.println(i); } } } }
这道题另一个思路直接用treeMap特性,但是很奇怪一直通不过,最后用上面方式就可以
题目4:
题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。思路1:用java自带方法
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (sc.hasNext()){ String str=sc.next().substring(2); System.out.println(Integer.parseInt(str,16)); } } }思路2:自己实现
public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()){ StringBuffer sb=new StringBuffer(); sb.append(sc.next()); //String str=sc.next(); String str=sb.reverse().substring(0,sb.length()-2); char ch[]=str.toCharArray(); int sum=0; for(int i=0;i<ch.length;i++){ if(ch[i]>='A'&&ch[i]<='F'){ sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i); }else { sum+=(Integer.valueOf(ch[i])-48)*Math.pow(16,i); } } System.out.println(sum); // System.out.println(Integer.valueOf('6')); } } }
题目4:
题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNextLine()){ String str = scanner.nextLine(); split(str); } } public static void split(String s){ while(s.length()>=8){ System.out.println(s.substring(0,8)); s = s.substring(8); } if(s.length()>0 && s.length()<8){ s = s+"00000000"; System.out.println(s.substring(0,8)); } } }
这道题刚开始没好的思路,后来发现添加数字0不用考虑那么复杂,先加满8个0,再做截取就行
知识点:string
题目5:
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); long num = scanner.nextLong(); System.out.println(getResult(num)); } public static String getResult(long ulDataInput){ int i = 2; String result = ""; while(ulDataInput != 1){ while(ulDataInput%i==0){ ulDataInput = ulDataInput/i; result =result+i+" "; } i++; } return result; } }
题目6:
写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
import java.util.*; import java.math.*; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); float f = scanner.nextFloat(); System.out.println(Math.round(f)); } }
此题比较简单,主要利用了jdk math自带的round方法
题目7:
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); Set<Character> charSet = new HashSet<Character>(); int count = 0; for(int i=0;i<str.length();i++){ char ch = str.charAt(i); if(!charSet.contains(ch)){ charSet.add(ch); int ascii = Integer.valueOf(str.charAt(i)); if(ascii>=0 && ascii<=127){ count++; } } } System.out.println(count); } }
知识点:java获取ascii码可用Integer.valueOf();
扩展:另一种方法不用set,直接拼接字符串可能更高效。
相关文章推荐
- java基础之& 和 && 的差别
- Java题,class A { static int x; } class B { A a = new A(); a.x=1; }错在哪
- java(二十一)集合 ArrayList
- eclipse快捷键
- 在 Eclipse 中使用 PHP
- java(二十)多态
- springmvc spring mybatis框架整合
- Java common utils test
- Java开源电商项目比较
- Spring实现AOP的4种方式
- Java读取文件夹大小的6种方法及代码
- Java并发编程:Callable、Future和FutureTask
- MyEclipse开发WebService教程
- spring mvc初始化及其原理
- java bio nio aio
- Java SSL/TLS 通信demo
- SpringMVC实战
- java基础篇--06<java泛型>
- MyEclipse开发REST Web Service
- Java关键字transient和volatile小结