小米加携程笔试

第一题是匹配单词,有数字,符号,大写字母,小写字母四种类型,还有特定长度为8到120,四个符号都有且长度满足则输出0,若长度不满足则输出1,若没完全包含四个符号则输出2;
过了83%还有一个用例不知道怎么过,
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String s=in.next();
            char[] ch=s.toCharArray();
            int length=ch.length;
            if(length<8||length>120){
                System.out.println(1);
                continue;
            }
            int num=0;
            int bigwrite=0;
            int smallwrite=0;
            int zifu=0;
            for(int i=0;i<ch.length;i++){
                if(ch[i]>='0'||ch[i]<='9'){
                    num++;
                }
                if(ch[i]>='a'||ch[i]<='z'){
                    smallwrite++;
                }
                if (ch[i]>='A'||ch[i]<='Z'){
                    bigwrite++;
                }
                if(ch[i]=='!'&&ch[i]=='#'&&ch[i]=='$'){
                zifu++;
                }
            }
            if(num>0&&bigwrite>0&&smallwrite>0&&zifu>0){
                System.out.println(0);
            }
            else{
                System.out.println(2);
            }
        }
    }
}
好了,直接看第二题没有网格看了十分钟,没时间了,直接骗了50%,输出个true;转去携程辽
携程选择比小米难一点,编程也难
1.过了77%,逗号不知如何去掉,搞了半天
import java.util.HashMap;
import java.util.Scanner;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String target=in.nextLine();
        String ischeck=in.nextLine();
        String instead=in.nextLine();
       
            StringBuilder sb = new StringBuilder();
            String[] strings = ischeck.split(" ");

            Map<Character, Integer> map1 = new HashMap<Character, Integer>();
            for (int k = 0; k < target.length(); k++) {
                if (!map1.containsKey(target.charAt(k))) {
                    map1.put(target.charAt(k), 1);
                } else {
                    map1.put(target.charAt(k), map1.get(target.charAt(k)) + 1);
                }
            }
            for (int i = 0; i < strings.length; i++) {
                char[] ch = strings[i].toCharArray();
                Map<Character, Integer> map = new HashMap<Character, Integer>();
                int j;
                for ( j = 0; j < ch.length; j++) {
                    
                    if (!map.containsKey(ch[j])) {
                        map.put(ch[j], 1);
                    } else {
                        map.put(ch[j], map.get(ch[j]) + 1);
                    }
                }
              

                if (map.equals(map1)) {
                    strings[i] = instead;
                }
                sb.append(strings[i] + " ");
            }
            System.out.print(sb.toString());
        }
    }
}
2.第二题看了一下,直接骗了13%
3.第三题亦是如此,也骗了13%
流下菜鸡的泪水,

#笔试题目##小米##携程#
全部评论
小米第一题,除了数字字母外的都是其他字符
点赞 回复 分享
发布于 2020-09-09 10:14
携程的第一题不能直接用分隔符分割空格,你应该是在遍历没一个字符,如果不是字母,则标识在此之前就是一个单词,然后把这个单词拿去判断,判断完把这个单词置,然后继续,直到遍历完所有,最坏情况下复杂度为O(N*M) N是字符长度,M是敏感词长度
点赞 回复 分享
发布于 2020-09-09 10:08

相关推荐

04-25 18:13
五邑大学 Java
后来123321:大二两段实习太厉害了,我现在大二连面试都没有
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务