首页 > 华为笔试4.29
头像
皮蛋瘦肉粥。
编辑于 2020-04-29 21:31
+ 关注

华为笔试4.29

今晚华为的三道笔试题本菜鸡居然都做出来了,开始膨胀
人生第一次啊
我是java写的哈。

我的题目是
获取字符串排列组合数量
删除字符 加密
还有约会城市道路硬币啥的

题目可能不一样,嗨呀

第一题思路:
map存每个字符出现数量。
然后字符数量的阶乘除以每个字符数量的阶乘
比如 aabbbcccc
答案:9!/2!/3!/4!
private static int getNum(char[] ch) {
		Map<Character,Integer> map=new HashMap<Character,Integer>(8);
		for(int i=0;i<ch.length;i++){
			if(map.containsKey(ch[i])){
				int value=map.get(ch[i]);
				map.put(ch[i], value+1);
			}else{
				map.put(ch[i], 1);
			}
		}
		int len=ch.length;
		int res=1;
		while(len!=1){
			res=res*len;
			len--;
		}
		for(Character c:map.keySet()){
			int value=map.get(c);
			while(value!=1){
				res=res/value;
				value--;
			}
			
		}
		return res;
	}


第二题思路:
循环k次删k个字母,
每次循环比较相邻两个,前一个大就删除前一个,比如bca,就删除c
如果某次没有删除 说明字母从小到大排列,比如aabbcc,那直接从后往前删就行了。
private static void getAnswer(String str, int k) {
		ArrayList<Character> list=new ArrayList<Character>();
		for(int i=0;i<str.length();i++){
			list.add(str.charAt(i));
		}
		int size=list.size();
		int nn=0;
		boolean flag=false;
		for(int i=0;i<k;i++){
			
			for(int j=0;j<list.size()-1;j++){
				if(list.get(j)>list.get(j+1)){
					list.remove(j);
					break;
				}
				
			}
			nn=i;
			if(list.size()==size-i){
				flag=true;
				break;
			}
		}
		if(flag){
			for(int i=nn;i<k;i++){
				list.remove(list.get(list.size()-1));
			}
		}
		for(int i=0;i<list.size();i++){
			System.out.print(list.get(i));
		}
		
		
	}


第三题思路:
遍历路径,找到源城市和当前(传入参数start)相同的道路,同时判断钱够不够用,够的就递归(硬币数量减少,道路长度增加,当前城市改变)
记录每次最小路径值,返回
/**
k硬币数量
n城市数量
r道路数量
arr数组
start当前城市
l当前路径
*/
private static int getAnswer(int k, int n, int r, int[][] arr, int start, int l) {
		if (start == n) {
			return l;
		}
		int min = Integer.MAX_VALUE;
		int temp = -1;
    
		for (int i = 0; i < r; i++) {
			if (arr[i][0] == start && arr[i][3] <= k) {
				temp = getAnswer(k - arr[i][3], n, r, arr, arr[i][1], l + arr[i][2]);
			}
			if (min >= temp && temp != -1) {
				min = temp;
			}
		}
		if (min != Integer.MAX_VALUE) {
			return min;
		}
		return -1;
	}        


也不知道有没有说明白,嗨呀我尽力了。。

我好像没碰到90的情况,捂脸,可能运气太好了

代码可以私信加微信发哈

全部评论

(21) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐