4.24 华为笔试,破解小明的密码,python

这是个找规律的题。。。

先统计每个字母的次数
1.先找 0, 2, 6, 8,因为他们对应的z, w, x, g只有自己单词里有,然后把这四个单词的里的其它字母减去,下面同理
2. 再找 3, 7
3. 再找4, 5
4. 再找 1, 9
def solution(s):
    from collections import Counter
    s = s.lower()
    res = [0] * 10
    counter = Counter(s)
    dic0 = {"z": 0, "w": 2, "g": 8, "x": 6, "s": 7, "h": 3, "r": 4, "v": 5, "i": 9, "o": 1}
    dic1 = {"z": ["e", "r", "o"], "w": ["t", "o"], "x": ["s", "i"], "g": ["e", "i", "h", "t"]}
    dic2 = {"s": ["e", "v", "e", "n"], "h":["t", "r", "e", "e"]}
    dic3 = {"r": ["f", "o", "e"], "v": ["f", "i", "e"]}
    dic4 = {"i": ["n", "n", "e"], "o": ["n", "e"]}
    for d in [dic1, dic2, dic3, dic4]:
        for k in d:
            if k in counter:
                res[dic0[k]] = counter[k]
                for v in d[k]:
                    counter[v] -= counter[k]
                counter.pop(k)
    res_s = ""
    for i, num in enumerate(res):
        res_s += str(i) * num
    return res_s
#华为##笔试题目##题解#
全部评论
没看到题目里说的升序……GG
点赞 回复
分享
发布于 2019-04-24 21:19
import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main{     public static String[] num= {"zero","one","two","three","four","five","six","seven","eight","nine"};     public static ArrayList<Integer> nums = new ArrayList<Integer>();     public static HashMap map = new HashMap();     public static void fun(String str){         if("".equals(str)){             for(int i = 0;i<nums.size();++i){                 System.out.print(nums.get(i));             }             System.exit(0);         }else{             for(int i = 0;i<=9;++i){                 nums.add(i);                 String string = "";                                  if(map.containsKey(num[i])){                     string = "false";                 }else{                     string = fun1(str, num[i]);                 }                                  if(!"false".equals(string)){                     fun(string);                     nums.remove(nums.size()-1);                 }else{                     map.put(num[i], "false");                     nums.remove(nums.size()-1);                 }             }         }     }     /**      * 判断Str中有无num的拼写,若有,则在Str中删除num的字符,且返回剩下的字符,若无,返回false      * @param str      * @param num      * @return      */     public static String fun1(String str,String num){         ArrayList<Integer> index = new ArrayList<Integer>();         for(int i = 0;i<num.length();++i){             boolean flag = false;             for(int j = 0;j<str.length();++j){                 if(num.charAt(i) == str.charAt(j)){                     if(!index.contains(j)){                         flag = true;                         index.add(j);                         break;                     }                 }             }             if(!flag){                 index = null;                 break;             }         }         if(index != null && index.size()!=0){             return fun2(str, index);         }         return "false";     }     /**      * 删除str中的num,返回剩余的字符串      * @param str      * @param index      * @return      */     public static String fun2(String str,ArrayList<Integer> index){         String newStr = "";         for(int i = 0;i<str.length();++i){             if(!index.contains(i)){                 newStr += str.charAt(i);             }         }         return newStr;     }          public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         String line = sc.nextLine();         fun(line.toLowerCase());     } }
点赞 回复
分享
发布于 2019-04-24 21:58
联想
校招火热招聘中
官网直投
老哥 第二题公交站那个有思路嘛
点赞 回复
分享
发布于 2019-04-25 00:55
楼主题目能不能大概说下
点赞 回复
分享
发布于 2019-04-25 08:41
好评~当时没看到升序结果没写这题,就做了前两道
点赞 回复
分享
发布于 2019-04-27 12:57

相关推荐

点赞 18 评论
分享
牛客网
牛客企业服务