发布于 2014-10-22 14:53:34 | 2794 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

华为

华为技术有限公司是一家生产销售通信设备的民营通信科技公司,总部位于中国广东省深圳市龙岗区坂田华为基地。华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及专业网络拥有者提供硬件设备、软件、服务和解决方案。华为于1987年在中国深圳正式注册成立。


1. 括号合法性判断

给定一个只有'('和')'的字符串,判断其在语法逻辑上是否合法。

 

解答:这题用栈的方法,每遇到左括号进栈,遇到右括号则将左括号弹出,没得弹出则非法,最后判断栈不为空也非法。

还有一种方法:只要判断左括号和右括号的数目。用两个变量int a,b存储左右括号数。一个for循环遍历字符串,遇到左括号a++;遇到右括号b++。每次判断b是否大于a,若大于则不合法,结束(这一步是防止先出现右括号的情况,见下面童鞋的指正)。否则遍历结束后判断:若a==b,合法;若a!=b,不合法。

 

  1. import java.util.Scanner;  
  2.   
  3. public class Main {  
  4.     public static void main(String[] args) {  
  5.         int a = 0;  
  6.         int b = 0;  
  7.         boolean valid = true;  
  8.         Scanner in = new Scanner(System.in);  
  9.         String str;  
  10.         str = in.nextLine();  
  11.         in.close();  
  12.           
  13.         char[] cArr = str.toCharArray();  
  14.           
  15.         for (int i = 0; i < cArr.length; i++) {  
  16.               
  17.             if(cArr[i]=='(')  
  18.                 a++;  
  19.             if(cArr[i]==')')  
  20.                 b++;  
  21.             if(b > a){  
  22.                 valid = false;  
  23.                 break;  
  24.             }  
  25.         }  
  26.         if (a == b && valid)  
  27.             System.out.println("valid");  
  28.         else  
  29.             System.out.println("invalid");  
  30.     }  
  31.   
  32. }  


 

2. 整数排序

输入一组大于等于0的整数,根据从大到小的顺序排序后输出;如果排序后有连续数时,只输出连续输的最大和最小数。输入的所有整数都各不相同,即不用考虑两个整数相同的情况。

如: 输入4,7,2,1,5,8,9,11

        输出11,9,7,5,4,2,1

 

解答:第一步当然是先排序,各种排序法都行。用 Java的话最方便啦,调用Arrays.sort(int[]),一步完成(当然这个是顺着排,输出的时候倒过来就行了)。接下来是去掉连续数的中间数 字。注意排序后数组的头和尾必然要输出的,于是循环从1:length-2,判断这些元素跟它前后的元素是否都相差1。

System.out.print(arr[length-1]+",");

for(i = arr.length - 2; i >0; i --){

if((arr[i] == arr[i+1] -1)&&arr[i] == arr[i-1] +1){

continue;

}

System.out.print(arr[i]+",");

}

System.out.print(arr[0]);

 

3.设计一个定时器管理系统,可以动态启动、停止定时器,并能根据已失去的时长自动调整剩余的时间。

运行时间限制:1Sec

内存限制:无限制

输入:启动定时器:starttimmer: ID, time

举例:

starttimmer: 1, 1000

启动一个定时器,其ID为1,定时时长time为1000ms

注:定时器ID用例保证非负整数,定时时长一定为正整数

 

停止定时器:stoptimmer: ID

举例:

stoptimmer: 1

停止一个ID为1的定时器

注:定时器ID用例保证非负整数,如果停止的定时器ID不存在,则忽略。

 

逝去时长:elapse: time

举例:

elapse: 1000

时间逝去1000ms

注:用例保证时长一定为正整数

 

输入结束

end

 

输出:

按启动顺序输出还没有停止的定时器,如ID为1的定时器还有1000ms才结束

timer: 1, 1000

如果所有定时器都停止了,输出none

none

 

样例输入:

starttimer: 1, 1000

starttimer: 2, 2000

elapse: 1000

end

样例输出:timer: 2,1000

 

  1. import java.util.HashMap;  
  2. import java.util.Iterator;  
  3. import java.util.Scanner;  
  4.   
  5. public class Main {  
  6.     static HashMap<String, Integer> timer = new HashMap<String, Integer>();  
  7.     static boolean allStop = true; //所有定时器都停止的标志  
  8.       
  9.     public static void main(String[] args) {  
  10.         Scanner in = new Scanner(System.in);  
  11.         String str;  
  12.         str = in.nextLine();  
  13.         while (str != null) {  
  14.             if (str.startsWith("starttimer:")) {  
  15.                 str = in.nextLine();  
  16.                   
  17.                 String[] tmp = str.split("\\W+");//定时ID与定时时间分隔开  
  18.                 if (tmp.length < 2) { //判断不规范的输入  
  19.                     System.out.println("invalid input format");  
  20.                     break;  
  21.                 }  
  22.                 timer.put(tmp[0], Integer.parseInt(tmp[1])); //讲timer存入HashMap  
  23.                 str = in.nextLine();  
  24.             }  
  25.             if (str.startsWith("elapse:")){  
  26.                 str = in.nextLine();  
  27.                   
  28.                 int elapse =  Integer.parseInt(str);  
  29.                 Iterator<String> it = timer.keySet().iterator();  
  30.                 while(it.hasNext()){  
  31.                     String key = it.next();  
  32.                     int rest = (Integer)timer.get(key) - elapse; //当前时间减去定时时长  
  33.                     timer.put((String) key, rest); //重新存入HashMap  
  34.                 }  
  35.                   
  36.                 str = in.nextLine();  
  37.             }  
  38.             if (str.startsWith("end")){  
  39.                 Iterator<String> it = timer.keySet().iterator();  
  40.                   
  41.                 while(it.hasNext()){  
  42.                     String key = it.next();  
  43.                     if ((Integer)timer.get(key) > 0){//输出剩余时长大于0的定时器  
  44.                         allStop = false;  
  45.                         System.out.println("timer: "+ key +","+timer.get(key));  
  46.                     }  
  47.                       
  48.                 }  
  49.                 if(allStop){  
  50.                     System.out.println("none");  
  51.                 }  
  52.                 break;  
  53.             }                 
  54.         }  
  55.         in.close();  
  56.     }  
  57. }  


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务