网上20132014华为机试的相关java实现(3)
来源:互联网 发布:java中action 编辑:程序博客网 时间:2024/04/30 01:36
1. 输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50。
/** *CountMinAddMax.java */package interview.huawei;/**输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2; * 另外数组的长度不超过50 * @author xuhongbin * @data2014年9月20日下午7:10:16 */public class CountMinAddMax {public static int add(int[] num){int min = num[0];int max = num[0];for(int temp : num){if(temp > max){max = temp;}if(temp < min){min = temp;}}return min+max;}/** * @param args */public static void main(String[] args) {int[] t = new int[50];for(int i = 0; i < t.length; i++){t[i] = (int) (Math.random()*10);System.out.print(" " + t[i]);}System.out.println( );System.out.println(add(t));}}
具体代码:
/** *AddBigNum.java */package interview.huawei;/** * @author xuhongbin * @data2014年9月20日下午7:24:27 */public class AddBigNum {public static void addBigNum(char[] a, char[] b, char[] conse){//存放结果的数组比加数多一位用于存储可能发生的进位。int jinwei = 0;int temp;int al = a.length-1;int bl = b.length-1;int index = conse.length-1;for(;al>=0&&bl>=0;al--,bl--,index--){temp = a[al]+b[bl]+jinwei;jinwei =(temp>=10? 1:0);conse[index] = (char) (temp%10);}while(al >= 0){temp = a[al]+jinwei;conse[index--] = (char) (temp%10);jinwei =(temp>10? 1:0);al--;}while(bl >= 0){//System.out.println(jinwei);temp = b[bl]+jinwei;conse[index--] = (char) (temp%10);jinwei =(temp>=10? 1:0);bl--;}conse[index] = (char) jinwei;}public static void main(String[] args) {char[] a = {9,2,3};char[] b = {2,9,4,5,6};for(char c: a){System.out.print((int)c);}System.out.println();for(int i = 0; i<b.length;i++){System.out.print((int)b[i]);}System.out.println();char[] conse = new char[a.length>b.length? (a.length+1):(b.length+1)];addBigNum(a, b, conse);for(char c: conse){System.out.print((int)c);}}}
3. 一组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人 (约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。)
具体代码实现:
/** *Josephus.java */package interview.huawei;import java.util.BitSet;/** * @author xuhongbin * @data2014年9月20日下午9:46:48 */public class Josephus {public static int printLastNode(int k, int m, int n){//k指从编号为k的人出发,m为从每次第m 个人出列,n为人数BitSet bs = new BitSet(n);//BitSet存储的是该数字是否被访问过,访问过为true,未访问过为false;int flag = 0;int index = 0;int count = 0;//表示将该表循环一次,没有任意一个数为false;for(int i= k-1; i< n;i++){//System.out.println(i-1);if(!bs.get(i)){count++;flag++;if(flag == m){System.out.println("第"+(i+1)+"个人自杀!!!");bs.set(i);index = i;flag= 0;}}if(i == n-1&& count > 0){i = -1;//特别注意该处i应初始化为-1,而非0,因为for循环还要对i进行+1操作。count = 0;}}return index+1;}public static void main(String[] args) {System.out.println(printLastNode(1, 3, 41)); //最后两个人应该是16和31。ok}}
3. 字串转换
问题描述:
将输入的字符串(字符串仅包含小写字母’a'到’z'),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:
void convert(char *input,char* output)
【输入】 char *input , 输入的字符串
【输出】 char *output ,输出的字符串
【返回】无
具体代码如下:
/** *Stringtranslation.java */package interview.huawei;/** * 问题描述: * 将输入的字符串(字符串仅包含小写字母’a'到’z'),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。 * 例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。 * 要求实现函数: * void convert(char *input,char* output) * @author xuhongbin * @data2014年9月21日上午9:55:11 * 【输入】 char *input , 输入的字符串 * 【输出】 char *output ,输出的字符串 * 【返回】无 */public class Stringtranslation {public static void convert(char[] input,char[] output){char c = input[0];boolean flag = false;output[0] = (char) (c=='z'? 'a':(c+1));for(int i = 1; i < input.length; i++){if(input[i] != input[i-1]||(input[i]==input[i-1]&&flag)){flag = false;output[i] = (char) (input[i]=='z'? 'a':input[i]+1);}else{output[i]= (char) (output[i-1]=='z'? 'a':(output[i-1]+1));flag = true;}}}public static void main(String[] args) {String input = "abcfgecdboikkndddav";String right = "bcdghfdecpjlmoefebw";System.out.println(right);char[] output = new char[input.length()];convert(input.toCharArray(),output);for(char c : output){System.out.print(c);}}}
非常要注意flag的设定。
0 0
- 网上20132014华为机试的相关java实现(3)
- 网上20132014华为机试的相关java实现(1)
- 网上20132014华为机试的相关java实现(2)
- 华为机试准备--练习题(JAVA实现)
- 华为机试准备--练习(JAVA实现)
- 华为机试1-10 Java实现
- 网上找到的HashSet的java实现
- 华为机试—7的相关数
- BP神经网络java实现,按照算法步骤也参考网上相关资源写的,若君有高见,非常欢迎指教
- 一些从网上收集的Java相关网址
- 华为机试--Java
- 华为机试练习---java实现电话号码本
- 网上开店的相关问题
- 网上看到的相关知识
- 2015届华为校园招聘机试题 (3)java实现
- 华为桌面云中和Java相关的问题
- java实现网上在线支付
- 用Java EE 5实现的网上书店实例
- java按钮和面板的用户界面
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第一篇:前期环境准备
- sift
- 【google apec 2015 1b】 problem a: 密码攻击数 排列组合/动态规划
- 备忘录:asp.net 用户控件 多语言支持 多工程 i18n
- 网上20132014华为机试的相关java实现(3)
- UVA - 10361 Automatic Poetry 神秘的空格
- 在Linux下编写Daemon
- 不同计算模式的发展
- Gunvor 5.5.0.Final rest api汇总
- 创建链表
- x的n次方(二分法)
- 【BestCoder】 HDOJ 5021 Revenge of kNN II
- extjs 省市县 读取