华为机试题记录2

原创 2015年07月06日 22:41:24
import java.util.*;
import java.util.Map.Entry;
public class Huawei {
	
	
		public static void main(String args[]){
			fitOrder();
			//fun();
			//theLastLength();
			//change();
			//reversInt();
			// deleteStr();
			//fitOrder();
//			sort();
//			Scanner n = new Scanner(System.in);
//			
//			String a="";
//			String b="";
//			
//			//读取控制台输入字符串
//			 a=n.nextLine();
//			 b=n.nextLine();
//			 
//			System.out.println(a);
//			System.out.println(b);	
//			 
//			//获取字符串a,b的长度
//			int aLength=a.length();
//			int bLength=b.length();
//			//定义最终结果字符串长度
//			int length=0;
//			
//			//最终字符串的长度是a,b中较长字符串长度+1
//			if(aLength>=bLength){				
//				length=aLength+1;
//				
//			}else {
//				length=bLength+1;
//			}
//			
//			//先将结果放到整形数组中,然后再转换
//			int[] resultc = new int[length];
//			
//			int c=0;
//			
//			int bb=0;
//			int aa=0;
//			while(length>1){
//				aa=0;bb=0;
//				
//				//这里因为不确定a,b字符串哪个比较短,所以在某一个字符串加完的情况下自动用0代替。相当于将两个字符串都看作为较长字符串的长度,不够位用0补齐
//				if(bLength>0){					
//					bb=Integer.valueOf(b.charAt(bLength-1)+"");					
//				}
//				if(aLength>0){					
//					aa=Integer.valueOf(a.charAt(aLength-1)+"");					
//				}
//				
//				//System.out.println("aa----"+aa+"     bb-----"+bb);
//				c=aa+bb;
//				//计算出了进位后的数,再加上它前面数的进位
//				resultc[length-1]+=c%10;
//				//进位值
//				resultc[length-2]=c/10;
//				
//				length--;
//				aLength--;
//				bLength--;								
//			}
//			String result="";
//			
//			//如果结果数组的0位置的值是0,得判断舍弃
//			int i =0;
//			if(resultc[0]==0){
//				
//				i=1;
//				
//			}
//			for(;i<resultc.length;i++){
//				
//				result+=resultc[i];
//				
//			}
//			
//			System.out.println(result);
			
		}
		
		
		public static void sort(){
			
			Scanner n = new Scanner(System.in);
			String in = n.nextLine();
			
			String inArray[] = in.split(",");

			for(int i=0;i<inArray.length;i++){
				
				for(int j=i;j>0&&(Integer.valueOf(inArray[j])<Integer.valueOf(inArray[j-1]));j--){
					
					String temp = inArray[j];
					inArray[j]=inArray[j-1];
					inArray[j-1]=temp;					
				}
				
			}
			
			String result="";
			
		    ArrayList<String> list = new ArrayList<String>();
			for(int i=0;i<inArray.length;i++){
				if(!list.contains(inArray[i])){
					
					list.add(inArray[i]);
					result += inArray[i]+" ";
					
				}
				
			}							
				System.out.println(result.substring(0,result.length()-1));
			
		}
		
		
		public static void fitOrder(){
			
			//初始化,构造hashmap存放所有命令以及执行结果
			HashMap<String, String>  hm = new HashMap<String, String>();
			hm.put("reset", "reset what");
			hm.put("reset board", "board fault");
			hm.put("board add", "where to add");
			hm.put("board delet", "no board at all");
			hm.put("reboot backplane", "impossible");
			hm.put("backplane abort", "install first");
			
			ArrayList<String> array = new ArrayList<String>();//存放输入字符串
			
			ArrayList<String> arraySpace = new ArrayList<String>();//存放判断字符串是否有空格
			ArrayList<String> arraySpaceMap = new ArrayList<String>();//存放判断map中key字符串是否有空格
			Scanner scn = new Scanner(System.in);
			String str;
			while(true){
				
				str=scn.nextLine();
				arraySpace.clear();
				arraySpaceMap.clear();
				
				arraySpace=isContainSpace(str);
				int size = arraySpace.size();
				int count=0;
				//分两种情况,有空格,和无空格
				String entryValue="";
				String entryKey="";
				if(size==1){
					
					
					
					//遍历MAP
					for(Entry<String,String> entry : hm.entrySet()){
						
						entryKey = entry.getKey();
						arraySpaceMap=isContainSpace(entryKey);
						int mapsize=arraySpaceMap.size();
						
						if(mapsize==1&&entryKey.startsWith(str)){
							entryValue = entry.getValue();
							count++;						
						}
						
					}
					
					
				}else if(size==2){
					
					for(Entry<String,String> entry:hm.entrySet()){    
						entryKey = entry.getKey();
						arraySpaceMap=isContainSpace(entryKey);
						int mapsize=arraySpaceMap.size();
						//如果Map没有空格,直接返回unkown command
						if(mapsize==1){
							
							
							
						}else if(mapsize==2){
							if(arraySpaceMap.get(0).startsWith(arraySpace.get(0))&&arraySpaceMap.get(1).startsWith(arraySpace.get(1))){
								entryValue = entry.getValue();
								count++;
							}
							
							
						}
						
					}
					
					
				}
				if(count==1){
					
					System.out.println(entryValue);
					
				}else{
					
					System.out.println("unkown command");
					
				}
				
			}
			
//			//获取控制台输入知道输入值为空
//			while (!"".equals(line=scn.nextLine())) {
//			array.add(line);
//			}
//			//对于每一行输入进行操作
//			
//			for(String str : array){
//				
//				
//				
//			}
			
			
			
			
			//System.out.println(substr1+"        "+substr2);
			
			
//			}
			
			
			
		}
		
		public static ArrayList isContainSpace(String str){
			
			ArrayList<String> list = new ArrayList<String>();
			int index =0;//字符串空格位置
			
			index = str.indexOf(" ");
			
			//如果没有空格,直接放入LIST,如果有空格,将分隔的字符串分开放入LIST
			if(index<0){
				
				list.add(str);
				
			}else{
				
				list.add(str.substring(0, index));
				list.add(str.substring(index+1, str.length()));
				
			}
			return list;
		}
		
		//找到字符串中出现次数最少的字符串,删除后的字符串
		public static void deleteStr(){
			
			Scanner n = new Scanner(System.in);
			String str =  n.nextLine();
			
			//char[] charArray= str.toCharArray();
			HashMap<String,Integer> hm = new HashMap<String,Integer>();
			String s = "";
			
			for(int i=0;i<str.length();i++){
				s=str.charAt(i)+"";
				if(hm.containsKey(s)){
					
					hm.put(s,hm.get(s)+1);
					
				}else
					hm.put(s, 1);
				
			}
			//System.out.println(hm);
			Set<Entry<String,Integer>> entryset = hm.entrySet();
			Iterator iter = entryset.iterator();
			
			Entry<String,Integer> entry = (Entry<String,Integer>)iter.next();
			int smallValue = entry.getValue();
			int value=0;
			
			//System.out.println(smallValue+"---------smallValue");
			while(iter.hasNext()){
				
			   entry = (Entry<String,Integer>)iter.next();
			   value = entry.getValue();
			   
			   //System.out.println(value+"---------value");
			   
			   if(value<smallValue){
				   
				   smallValue = value;
			   }
			}
			
			//System.out.println(smallValue+"---------smallValue");
			
			ArrayList<String> list = new ArrayList<String>();
			for(Entry<String,Integer> entry_a:hm.entrySet()){
				
				if(entry_a.getValue()==smallValue){					
					list.add(entry_a.getKey());					
				}				
			}
			
			//System.out.println(list);
			for(String l:list){
				
				str=str.replace(l, "");
				
			}
			
			System.out.println(str);
		}
		
		//判断整数有几位,逆序输出
		public static void reversInt(){
			
			Scanner n = new Scanner(System.in);
			
			while(true){
				
				int i = n.nextInt();
				
				
				int length = 0;
				
				int sum = 0;
				
				while(i>0){
					
					sum=sum*10+i%10;
					i=i/10;
					length++;
				}
				
				
				System.out.println(length+" "+sum);
			}
			

		}
		
		//密码转换
		public static void change(){
			
			Scanner n = new Scanner(System.in);
			String str = n.nextLine();
			String str_new = "";
			
			for(int i = 0;i<str.length();i++){
				
				String s = str.charAt(i)+"";
				
				int asci = s.hashCode();
				if(asci>=97&&asci<=99){
					str_new+="2";
				}else if(asci>=100&&asci<=102){
					str_new+="3";
				}else if(asci>=103&&asci<=105){
					str_new+="4";
				}else if(asci>=106&&asci<=108){
					str_new+="5";
				}else if(asci>=109&&asci<=111){
					str_new+="6";
				}else if(asci>=112&&asci<=115){
					str_new+="7";
				}else if(asci>=116&&asci<=118){
					str_new+="8";
				}else if(asci>=119&&asci<=122){
					str_new+="9";
				}else if(asci>=65&&asci<90){					
					str_new+=String.valueOf((char)(asci+33));
				}else if(asci==90){					
					str_new+="a";
				}else
					str_new+=s;
			}
			
			System.out.println(str_new);
			
		}
		
		//最后一个单词长度
		public static void theLastLength(){
			
			Scanner n = new Scanner(System.in);
			String str  = n.nextLine();
			
			
			int index = 0;
			index = str.lastIndexOf(" ");
			
			int result = str.length() - index -1;

			System.out.println(result);
			
			
			
			
			
			
		}
		
		public static void fun(){
			
			Scanner n = new Scanner(System.in);
			
			while(true){
				
				String str = n.nextLine();
				password(str);
				
			}
			
		}
		//密码验证合格
		public static void password(String str){

				int length = str.length();
				
				
				
				//判断长度
				if(length<=8){
					
					System.out.println("NG");
					return;
				}
				
				int count[] = {0,0,0,0};
				int sum=0;
				for(int i=0;i<length;i++){
					int assci = (str.charAt(i)+"").hashCode();
					
					//0~9
					if(assci>=48&&assci<=57){
						
						count[0]=1;
					}else if(assci>=65&&assci<=90){//A~Z
						
						count[1]=1;
					}else if(assci>=97&&assci<=122){//a~z
						count[2]=1;
					}else count[3]=1;
				}
				//判断是否三种组合
				
				for(int i=0;i<4;i++){
					//System.out.println(count[i]);
					if(count[i]==1){
						
						sum++;
					}
					
				}
				if(sum<3){
					//System.out.println("sum  <  3");
					System.out.println("NG");
					return;
					
				}
				
				//判断重复子串
				int step=1;
				boolean flag = true;
				while(step<length/2){
					int i=0;
					for(;i<length-step;i++){
						
						String sub = str.substring(i, i+step+1);
						String subl = str.substring(i+step+1);
						//System.out.println("sub   "+sub+"     subl   "+subl);
						if(subl.contains(sub)){
							
							//System.out.println("重复");
							System.out.println("NG");
							return;
						}
						
					}
					
					step+=1;
				}
				
				System.out.println("OK");

		}
		
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

华为2014机试题2

回来之后记忆模糊了,只能说下题目大致了,细节不太记得了。         题目描述:输入一串整数,输出整数对应的字符,字符之间用空格分开。整数最多不超过128个。         运行时间限制:无...

华为机试题【9】-整数分割为2的幂次

题目描述:一个整数可以拆分为2的幂的和,例如:7 = 1+ 2 + 47 = 1 + 2 + 2 + 27 = 1 + 1 + 1 + 47 = 1 + 1 + 1 + 2 + 27 ...

华为2015年校园招聘机试题(2)

2015年华为校园招聘机试题

华为2014年校园招聘机试题(2)

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

华为机试题----数组中找满足 2^n的数字

一、问题描述  功能描述:找出一个int[]中满足 2^n的数字,然后组成的新的数组 输入:{4,3,8} 输出:{4,8} 二、算法描述 /** * Finds the number ma...

2014届华为校园招聘机试题2

第一题、输入一个正整数,并编码为字符串进行输出 描述: 1、输入一个正整数,并编码为字符串进行输出。 编码规则为:数字0-9分别编码为字符a-j 2、输入肯定是正整数,不用做错误较验运行时间限制:...

2015 年 9月份华为机试题 (2)幸运号

// HUAWEI_2.cpp : 定义控制台应用程序的入口点。 ////找幸运号,petr是否存在,是否是幸运号,详细描述见华为机试题(2)幸运号描述 #include"stdafx.h" #inc...

2015届华为校园招聘机试题 java实现(2)

第二题:拼音转数字 输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下: 描述:      拼音        yi  er  san  si  wu  liu ...

华为机试题(2)

1、选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[]里存储与 score[]数组对应的评委类别,judge_type[i] == 1,表示...

[华为机试题]简单错误记录

题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。  处理: 1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)