发布于 2014-10-21 10:53:33 | 481 次阅读 | 评论: 0 | 来源: 网友投递

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

华为

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


1、描述: 
实现简易字符串压缩算法:一个长度最大为128的字符串,由字母a-z或者A-Z组成,将其中连续出现2次以上(含2次)的字母转换为字母和出现次数,以达到压缩目的。  
运行时间限制: 无限制  
内存限制: 无限制  
输入: 
输入字符串,最大长128  
输出: 
输入字符串  
样例输入: AAAABBBB  

样例输出: A4B4

参考答案:

  1. import java.util.Scanner;  
  2.   
  3. public class Main {  
  4.     public static void main(String[] args){  
  5.         int count = 1;  
  6.         Scanner in = new Scanner(System.in);  
  7.         String s = in.next();  
  8.         in.close();  
  9.         char[] chS = s.toCharArray();  
  10.         if (chS.length > 128){  
  11.             System.out.println("Length of input string out of bound");  
  12.             return;  
  13.         }  
  14.         StringBuffer compactS = new StringBuffer("");  
  15.         compactS.append(chS[0]);  
  16.         for (int i = 1; i < chS.length; i++){  
  17.             if (chS[i] == chS[i-1]){  
  18.                 count++;  
  19.             }  
  20.             else{  
  21.                 if (count>1){  
  22.                     compactS.append(count);  
  23.                 }  
  24.                 compactS.append(chS[i]);  
  25.                 count = 1;  
  26.             }  
  27.         }  
  28.         if (count>1){  
  29.             compactS.append(count); //这是最后一个字母连续出现的个数  
  30.         }  
  31.         System.out.println(compactS);  
  32.     }  
  33. }  

 

2、竞赛积分猜想 描述: 
某公司举办了知识竞赛。题目的计分规则如下: 1.每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前得到的分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 2.每位选手都有一个起步的分数为10分。?  
程序要求: 
如果某获胜选手最终得分是X分,如果不让你看比赛过程,请推断出他(她)哪个题目答对了,哪个题目答错了吗?把答对的题目记为1,答错的记为0,则10个 题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011?就是一种可能的情况,10道题目的编号从左到右依次排列。  
你的任务是算出满足该得分的所有可能情况,答案之间用|号分隔,并且答案需要进行排序,将答案转换为十进制后数字小的排在前面,即0010110011应该排在1010110011的前面。如果不存在满足该分数的情况,则输出10个0:0000000000

 

参考答案:

  1. import java.util.ArrayList;  
  2. import java.util.Scanner;  
  3.   
  4. public class Main {  
  5.     private static int finalScore;  
  6.     static ArrayList<String> array = new ArrayList<String>();  
  7.     public static void main(String[] args){  
  8.         Scanner in = new Scanner(System.in);  
  9.         finalScore = in.nextInt();  
  10.         in.close();  
  11.         char[] answer = new char[10];  
  12.         judge(10, 0, answer);  
  13.           
  14.         for (int i = 0; i < array.size()-1; i++){  
  15.             System.out.print(array.get(i));  
  16.             System.out.print("|");  
  17.         }  
  18.         System.out.print(array.get(array.size()-1));  
  19.     }  
  20.   
  21.     private static void judge(int score, int num, char[] answer) {  
  22.         if (num == 10){  
  23.             if(score == finalScore){  
  24.                 String res = new String(answer);  
  25.                 array.add(res);  
  26.             }  
  27.             return;  
  28.         }  
  29.         answer[num] = '1';  
  30.         judge(score*2, num+1, answer);  
  31.         answer[num] = '0';  
  32.         judge(score - num - 1, num+1, answer);  
  33.     }  
  34. }  

 

3. 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。

参考答案:

  1. import java.util.Scanner;  
  2. import java.util.regex.*;  
  3.   
  4. public class Main {  
  5.     public static void main(String[] args){  
  6.         Scanner in = new Scanner(System.in);  
  7.         String x = in.nextLine();  
  8.         in.close();  
  9.         Pattern p = Pattern.compile("\\d+\\s+[+|-]{1}\\s+\\d+");  
  10.         Matcher m = p.matcher(x);  
  11.         Boolean bo = m.matches();  
  12.         if (!bo){  
  13.             System.out.println("0");  
  14.         }  
  15.         else{  
  16.             String[] spli = x.split("\\s");  
  17.           
  18.             int a = Integer.parseInt(spli[0]);  
  19.             int b = Integer.parseInt(spli[2]);        
  20.           
  21.             if(spli[1].equals("+")){  
  22.                 System.out.println(a+b);  
  23.             }  
  24.             if(spli[1].equals("-")){  
  25.                 System.out.println(a-b);  
  26.             }  
  27.                   
  28.         }     
  29.     }  


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

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