华为上机题汇总----java

这是一篇整理的华为上机题目集合,主要涉及Java编程。包括字符串比较、字母频率统计、字符串拆分排序、字符转换等算法题目,适合准备华为上机考试的程序员进行练习和提升。
摘要由CSDN通过智能技术生成

    以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助。在练习的过程中成长,加油!~~ 


第1题输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,               输出不同的元素的个数。
           例如:  输入:s1="1,3,5"   len1=3        s2="2,4,1,7,5"   len2=5  
            输出:1  

package com.sheepmu.text;
 /**
  *  输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,输出不同的元素的个数。 例如:  输入:s1="1,3,5"   len1=3        s2="2,4,1,7,5"   len2=5  
  			输出:1 
 
    函数原型 public int getDiffNum(int len1, String s1, int len2, String s2)
  * @author sheepmu
  *
  */
public class HWText {
	 public static void main(String[] args){
	 String s1="1,3,5";
	 int len1=3;
	 String s2="2,4,1,7,5";
	 int len2=5;
	 int diffNum= getDiffNum(s1,len1,s2,len2);
	 System.out.println("不同的数目:"+diffNum);
	 }
	 public static int getDiffNum(String s1,int len1,String s2,int len2){
		 String[] str1=s1.split(",");
		 String[] str2=s2.split(",");
		 int len=len1>len2? len2:len1;
		 int count=0;
		 for(int i=0;i<len;i++){
			 if(!str1[len1-1-i].equals(str2[len2-1-i]))
				 count++;
		 }
		 return count;
	 }
}

第2题:输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
            例如:  输入:3+8×2/9-2  
            输出:2  

package com.sheepmu.text;

import java.util.ArrayList;
import java.util.List;

/****
 *输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
 
    例如:  输入:3+8×2/9-2  
  			输出:2  
 
    函数原型  . public int getMyRet(String str)  
 * @author sheepmu
 *
 */
public class HWText {
	 public static void main(String[] args){
		 String s="3+8×2/9-2 ";
		 int result=getMyRet(s);
		 System.out.println("最后结果:"+result);
	 }
	 public static int getMyRet(String s1 ){
		 int len=s1.length();
		  List<String> list=new ArrayList<String>();
		  for(int i=0;i<len;i++)
			  list.add(s1.charAt(i)+"");//!!!!!
		  System.out.println("list--->"+ list);//list--->[3, +, 8, ×, 2, /, 9, -, 2,  ]
		  for(int j=0;j<list.size();j++){
			   
			  if(list.get(j).equals("×")){
				   
				  int ji=Integer.parseInt(list.get(j-1))*Integer.parseInt(list.get(j+1));
				  list.add(j-1,ji+"");//把ji插入到原来x的前一位,原来的后移。从8开始往后移
				  list.remove(j);//删除8;remove是删除当前位置后后面的前移;故x到了j这个下标位置。
				  list.remove(j);//删除x
				  list.remove(j);//删除9
				  System.out.println("list--x后->"+ list);//list--x后->[3, +, 16, /, 9, -, 2,  ]
				  j--;//相当于这次循环木有跳动下一个下标,因为马上要对ji参与运算,而不是跳过
			  }
			  else if(list.get(j).equals("/")){
				  
				  int shang=Integer.parseInt(list.get(j-1))/Integer.parseInt(list.get(j+1));
				  list.add(j-1,shang+""); 
				  list.remove(j); 
				  list.remove(j); 
				  list.remove(j); 
				  System.out.println("list--/后->"+ list);//list--/后->[3, +, 1, -, 2,  ]
				  j--;
			  }
		  }
		  
		  for(int k=0;k<list.size();k++){//这个时候是新的size
			  if(list.get(k).equals("+")){
				  int he=Integer.parseInt(list.get(k-1))+Integer.parseInt(list.get(k+1));
				  list.add(k-1,he+""); 
				  list.remove(k); 
				  list.remove(k); 
				  list.remove(k); 
				  System.out.println("list--+后->"+ list); //list--+后->[4, -, 2,  ]
				 k--; 
			  }
			  if(list.get(k).equals("-")){
				  int cha=Integer.parseInt(list.get(k-1))-Integer.parseInt(list.get(k+1));
				  list.add(k-1,cha+""); 
				  list.remove(k); 
				  list.remove(k); 
				  list.remove(k); 
				  System.out.println("list--  -后->"+ list); //list--  -后->[2,  ]
				 k--;
			  }
		  }
		  int sum=Integer.parseInt(list.get(0));
		 return sum;
	 }
}


第3题:找出字符串中出现次数最多的字母和出现的次数

package com.sheepmu.text;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**** 
 * 找出字符串中出现次数最多的字母和出现的次数 
 * @author SheepMu
 */  
public class HWText {
	 public static void main(String[] args){
	 String s1="sheepmusheepmummmm";
	 List<String> list=new ArrayList<String>();
	 for(int i=0;i<s1.length();i++)
		 list.add(s1.charAt(i)+"");
	 System.out.println("排序前的list--->"+list);// 排序前的list--->[s, h, e, e, p, m, u, s, h, e, e, p, m, u, m, m, m, m]
	 Collections.sort(list);
	 System.out.println("排序后的list--->"+list);// 排序后的list--->[e, e, e, e, h, h, m, m, m, m, m, m, p, p, s, s, u, u]
	 int[] count=new int[list.size()];
	 for(int i=0;i<count.length;i++)
		 count[i]=1;
	 
	 System.out.println("初始定义每个字母出现的次数count--->"+Arrays.toString(count)); //list可以直接打印出来;但数组不行!打印数组的方法!!不然会[I@4a9a1ac
	 for(int j=0;j<list.size();j++)
		 for(int k=j+1;k<list.size();k++)
			 if(list.get(j).equals(list.get(k))){
				  count[j]++;
				 list.remove(k);	 
				 k--;
			 }
	 System.out.println("循环后的list--->"+list);	 //循环后的list--->[e, h, m, p, s, u]
	 System.out.println("list变化后每个字母出现的次数count--->"+Arrays.toString(count));  //因为数组长度这儿没有变化,所以后面还是保留了原本为每个字母定义的数量1
	
	 int maxTimes=count[0];//比较数组里面的最大值!
	 String maxStr=list.get(0);
	 for(int i=0;i<list.size();i++){
		 if(maxTimes<count[i]){
			 maxTimes=count[i];
			 maxStr=list.get(i);
		 }

	 }
	 
	 System.out.println("出现次数最多的字母:"+maxStr+"出现次数:"+maxTimes);
	 }
	 
}

方法二:

package com.sheepmu.text;
import java.util.ArrayList;
import java.util.List;
  /*     
  * @author sheepmu
  */ 
public class HWCompetition {
	public static void main(String[] args) {        
       String s1="sheepmusheepmummmm";   
       getStr(s1 ) ;
    }    
    public  static void getStr(String s1 ){ 
    	char[] cs=s1.toCharArray();  	 
    	List<Character> list=new ArrayList<Character>( );
    	for(int i=0;i<cs.length;i++){
    		list.add(cs[i]);
    	}
    	int maxcount=1;
    	char maxc=cs[0]; 
    	for(int i=0;i<list.size()-1;i++){
    		int count=1;
    		for(int j=i+1;j<list.size();j++){
    			if(list.get(i)==list.get(j)){
    				list.remove(j);
    				j--;
    				count++;
    			}
    			if(count>maxcount){
    				maxc=list.get(i);
    				maxcount=count;
    			}			
    		}
    	}
    	System.out.println(maxc+" "+maxcount);
    	 
     
    }
     
}	 
	 
 
 


第4题:拆分字符串,字符串中含有逗号和数字,对数字排序并输出

package com.sheepmu.text;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**** 
 * 拆分字符串,字符串中含有逗号和数字,对数字排序并输出
 * @author SheepMu
 */  
public class HWText {
	 public static void main(String[] args){
		 	String s0="123,45,25,85";
			String[] s1=s0.split(",");
//			 for(int i=0;i<s1.length;i++)
//			System.out.print(s1[i]+" ");//123 45 25 85       !!!!!!!!!!!!
			System.out.println(Arrays.toString(s1));//[123, 45, 25, 85]  !!!!数组本身就会有,分隔的
			int[] a=new int[s1.length];
 
			for(int i=0;i<a.length;i++)
			a[i]=Integer.parseInt(s1[i]);
			Arrays.sort(a);
			System.out.println(Arrays.toString(a));
			for(int number:a)
 		  System.out.print(number+" ");//25 45 85 123 	 
	 }	 
}



第5题:选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家
 评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分  * 
 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。
函数接口   int cal_score(int score[], int judge_type[], int n) 

package com.sheepmu.text;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**** 
 * 选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家
 评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分  * 
 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分
  函数接口   int cal_score(int score[], int judge_type[], int n) 
 * @author SheepMu
 */  
public class HWText {
	 public static void main(String[] args){
		 	 int[] score={60,70,80,70,90,60,80};
		 	 int[] judge_type={1,2,1,2,2,1,2};
		 	 int n=7;
		 	int result_core=cal_score(score,judge_type,n);
		 	 System.out.println("最后结果:"+ result_core);
	 }	 
	 public static int cal_score(int score[],int judge_type[],int n){
		 double sum_all=0;
		 double sum_specilist=0;
		 double sum_common=0;
		 int average_specialist=0;
		 int average_common=0;
		 int result=0;
		  List<Integer> specilist_index=new ArrayList<Integer>();
		 for(int i=0;i<judge_type.length;i++)
			 if(judge_type[i]==1)
				 specilist_index.add(i);
		 System.out.println("专家的下标:"+ specilist_index);//专家的下标:[0, 2, 5]
		
		 for(int i=0;i< specilist_index.size();i++)//!!!!!!!!!!
			 for(int j=0;j< score.length;j++)//!!!!!!!!!!
				 if(specilist_index.get(i)==j)
					 sum_specilist+=score[j];		 
		 System.out.println("专家的总分:"+ sum_specilist);//专家的总分:200.0
		 
		 for(int k=0;k< score.length;k++)
			 sum_all+=score[k];
		 System.out.println("全部总分:"+ sum_all);//全部总分:510.0
		 sum_common= sum_all-sum_specilist;
		 System.out.println("大众点评总分:"+  sum_common);//大众点评总分:310.0
		 average_specialist=(int)(sum_specilist/specilist_index.size());
		 System.out.println("专家平均分:"+ average_specialist);//专家平均分:66
		 average_common=(int)(sum_common/(n-specilist_index.size()));
		 System.out.println("大众平均分:"+ average_common);//大众平均分:77
		 result=(int)(average_specialist*0.6+average_common*0.4);
		 return result;
	 }
}

public class HWText {
	 public static void main(String[] args){
		 	 int[] score={60,70,80,70,90,60,80};
		 	 int[] judge_type={1,2,1,2,2,1,2};
		 	 int n=7;
		 	int result_core=cal_score(score,judge_type,n);
		 	 System.out.println("最后结果:"+ result_core);
	 }	 
	 public static int cal_score(int score[],int judge_type[],int n){
		 double sum_all=0;
		 double sum_specilist=
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值