华为机试题01(2015部分)
来源:互联网 发布:先学c还是先学java 编辑:程序博客网 时间:2024/06/03 15:58
1、字符串分解
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。
例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”。
2、拼音转数字
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
3、去除重复字符并排序
运行时间限制:无限制
内容限制: 无限制
输入: 字符串
输出: 去除重复字符并排序的字符串
样例输入: aabcdefff
样例输出: abcdef
4、等式变换
输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。
1 2 3 4 5 6 7 8 9 = X
比如:
12-34+5-67+89 = 5
1+23+4-5+6-7-8-9 = 5
请编写程序,统计满足输入整数的所有整数个数。
输入: 正整数,等式右边的数字
输出: 使该等式成立的个数
样例输入:5
样例输出:21
import java.util.Scanner;public class Test2015No01 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int num = input.nextInt(); int length = input.nextInt(); for(int n=0;n<num;n++){ StringBuilder sb = new StringBuilder(input.next()); handleString(sb, length); } input.close(); } private static void handleString(StringBuilder sb, int len){// StringBuilder result = new StringBuilder(); if(sb.length() == 0){ System.exit(0); }else if(sb.length()<len){ while(sb.length()<len){ sb.append("0"); } System.out.println(sb); }else{ System.out.println(sb.substring(0, len)); sb.delete(0, len); handleString(sb, len); } }}
import java.util.Scanner;public class Test2015No02 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String inputString = input.next(); System.out.println(handle(inputString)); input.close(); } private static StringBuilder handle(String string){ StringBuilder sb = new StringBuilder(); byte[] b = string.getBytes(); for(int i=0;i<b.length;i++){ switch(b[i]){ case 'y': sb.append("1"); i += 1; break; case 'e': sb.append("2"); i += 1; break; case 'w': sb.append("5"); i += 1; break; case 'l': sb.append("6"); i += 2; break; case 'q': sb.append("7"); i += 1; break; case 'b': sb.append('8'); i += 1; break; case 'j': sb.append("9"); i += 2; break; case 's': if(b[i+1]=='i'){ sb.append("4"); i += 1; break; }else { sb.append("3"); i += 2; break; } } } return sb; }}
import java.util.Scanner;public class Test2015No03 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String inputString = input.next(); handleStr(inputString); input.close(); } private static void handleStr(String str){ /* * 开一个空间将找到的字符放在对应其ascii码的位置 * 如果存在就添加一个flag * 再将有flag处对应的字符顺序打印出来 */ char[] newChar = new char[255];//开辟一个空间 char[] inputChars = str.toCharArray();//输入的char字符集 int temp; for(int i=0;i<inputChars.length;i++){ temp = inputChars[i];//遍历输入的字符集,如果重复就置1,否则为0 if(newChar[temp]==0){ newChar[temp] = 1; } } StringBuilder sb = new StringBuilder(); for(int j=0;j<newChar.length;j++){ //将为1的地方对应的字符打印出来 if(newChar[j] == 1){ sb.append((char)j); } } System.out.println(sb.toString()); }}
/** 参考:http://blog.csdn.net/tan313/article/details/40041953*//* * 解题思路: * 9个数中间插8个空,每个空有三种选择:“”,“+”,“-” * 对于每种情况计算结果,如果结果等于给定的数值就输出,count+1 */public class Test2015No04 { private static String[] numList = {"1","2","3","4","5","6","7","8","9"}; private static int count = 0;//结果计数 public static void main(String[] args) { // TODO Auto-generated method stub int[] operators = new int[8]; int target = 5; handleBlank(operators, target, 0); System.out.println(count); } /** * <p>Title: handleBlank</p> * <p>Description: </p>得到8个空的全排列结果 * @param blank 运算符空格 * @param target 预期结果,即等号右边的数 */ private static void handleBlank(int[] blank, int target, int index){ //结束条件 if(index==8){ result(blank, target); return; }else { //8个运算符空格,外层以“”,“+”,“-”循环,不断递归调用,结束条件是8个空格全满,即index=8 for(int j=0;j<3;j++){ blank[index] = j;//给每个blank赋值 handleBlank(blank, target, index+1); } } } /** * <p>Title: result</p> * <p>Description: </p>blank填充完毕之后计算结果 * @param blank 运算符空格 * @param target 预期结果 */ private static void result(int[] blank, int target){ String num = numList[0];//每个数 int sum = 0;//和 int ops = 1;//计算符 String expression = ""; expression = expression + numList[0]; for(int i=0;i<blank.length;i++){ switch(blank[i]){ case 0://"" num = num + numList[i+1]; expression = expression + numList[i+1]; break; case 1://"+" sum = calculate(sum, num, ops);//返回上一次计算结果,一定是上一次的结果 ops = 1;//记录本次运算符 num = numList[i+1]; expression = expression + "+" + numList[i+1]; break; case 2://"-" sum = calculate(sum, num, ops); ops = 2;//记录本次运算符 num = numList[i+1]; expression = expression + "-" + numList[i+1]; break; default: break; } } //最后一次没有算,这里的ops记录的是前一个blank的结果 if(ops == 1){ sum += Integer.parseInt(num); }else if(ops == 2){ sum -= Integer.parseInt(num); } //判断结果 if(sum==target){ System.out.println(expression + "=" + target); count++; } } private static int calculate(int sum, String num, int ops){ switch(ops){ case 1: sum += Integer.parseInt(num); break; case 2: sum -= Integer.parseInt(num); break; default: break; } return sum; }}
- 华为机试题01(2015部分)
- 华为面试题(部分带答案)
- 2015华为机试题
- 华为机试题 2015
- 华为机试题2015
- 2015华为机试题
- 2015年 华为机试题(三)
- 华为机试题02(2015)
- 华为机试题(2017/04/01)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)
- 华为的JAVA面试题及答案(部分)2017
- 用螺旋理论分析Sarrus机构的自由度及其性质
- Android Studio 部分快捷键用法
- Erlang 学习(四) 整数和字符串相互转换
- Centos环境下Mysql5.6的安装
- Transport(VMDB)error -44:Message
- 华为机试题01(2015部分)
- 百胜道闸安装注意事项
- 读《深入php面向对象、模式与实践》有感(二)
- bzoj1485: [HNOI2009]有趣的数列
- 关于要研究的知识点
- Spring框架中SecurityContextHolder类的使用详解(未完待续)
- CXF与Spring集成:自定义验证权限以及日志记录
- object-c 与 swift 混编
- ngnix开发(五)将rtmp直播流转换成hls直播流