快手笔试题

Posted haimishasha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快手笔试题相关的知识,希望对你有一定的参考价值。

1. 版本号比较

方法1,没有AC

public class A19 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        sc.nextLine();
        String[][] strs = new String[m][2];
        boolean[] result = new boolean[m];
        for (int i = 0; i < m; i++) 
            strs[i] = sc.nextLine().split(" ");
            int c1 = strs[i][0].split("\\.").length;
            int c2 = strs[i][1].split("\\.").length;
            while(c1<c2)
                strs[i][0]+=".0";
                c1++;
            
            while(c1>c2)
                strs[i][1]+=".0";
                c2++;
            
            if(strs[i][0].compareTo(strs[i][1])<0)
                result[i]= true;
            
        
        for (int i = 0; i < m; i++) 
            System.out.println(result[i]);
        
    

方法2 没有ac

package test;

import java.util.Scanner;

public class A17 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        sc.nextLine();
        String[][] strs = new String[m][2];
        
        for (int i = 0; i < m; i++) 
            strs[i] = sc.nextLine().split(" ");
        
        boolean[] result = new boolean[m];
        for (int i = 0; i < m; i++) 
            String[] str1 = strs[i][0].split("\\.");
            String[] str2 = strs[i][1].split("\\.");
            int[] val1 = new int[4];
            int[] val2 = new int[4];
            for (int j = 0; j < str1.length; j++) 
                val1[j] = Integer.valueOf(str1[j]);
            
            for (int j = 0; j < str2.length; j++) 
                val2[j] = Integer.valueOf(str2[j]);
            
            for (int j = 0; j < 4; j++) 
                if(val1[j]<val2[j])
                    result[i]=true;
                    break;
                
            
        
        for (int i = 0; i < m; i++) 
            System.out.println(result[i]);
        
    

方法3 AC

作者:jerryzhuo
链接:https://www.nowcoder.com/discuss/233405?type=post&order=time&pos=&page=1
来源:牛客网

import java.util.Scanner;
 
/**
 * 版本问题
 */
public class Main 
    public static void main(String[] args) 
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        String[] op1 = new String[m];
        String[] op2 = new String[m];
        for (int i = 0; i < m; i++) 
            op1[i] = in.next();
            op2[i] = in.next();
        
 
        Main main = new Main();
        main.outputResult(op1, op2);
    
 
    private void outputResult(String[] op1, String[] op2) 
        boolean[] result = new boolean[op1.length];
        for (int i = 0; i < op1.length; i++) 
            String[] oneArray = op1[i].trim().split("\\.");
            String[] twoArray = op2[i].trim().split("\\.");
            boolean isOk = true;
 
            int pointerOne = 0;
            int pointerTwo = 0;
            while (pointerOne < oneArray.length && pointerTwo < twoArray.length) 
                int compare = Integer.parseInt(oneArray[pointerOne]) - Integer.parseInt(twoArray[pointerTwo]);
                if (compare < 0) 
                    break;
                 else if (compare > 0) 
                    isOk = false;
                    break;
                 else if (pointerOne == oneArray.length - 1) 
                    pointerTwo++;
                    while (pointerTwo < twoArray.length && twoArray[pointerTwo].equals("0")) 
                        pointerTwo++;
                    
                    if (pointerTwo == twoArray.length) 
                        isOk = false;
                    
                 else if (pointerTwo == twoArray.length - 1) 
                    isOk = false;
                    break;
                
                pointerOne++;
                pointerTwo++;
            
 
            result[i] = isOk;
        
 
        for (boolean value : result) 
            System.out.println(value);
        
    

 

2. 平方和为1

4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 ,循环了,return false

AC

方法1

import java.util.Scanner;

public class A20 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int[] n = new int[m];
        for (int i = 0; i < m; i++) 
            n[i] = sc.nextInt();
            
        
        for (int i = 0; i < m; i++) 
            long result = getresult(n[i]);
            boolean r = true;
            while(result!=1)
                result = getresult(result);
                if(result==n[i])
                    r=false;
                    break;
                
            
            System.out.println(r);
        
        
    
    public static long getresult(long result2)
        long result = 0;
        
        while(result2!=0)
            long digit = result2 % 10;
            result = result+ digit*digit;
            result2 = result2/10;
        
        return result;
    

 

方法2

import java.util.Scanner;

public class A20 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int[] n = new int[m];
        for (int i = 0; i < m; i++) 
            n[i] = sc.nextInt();
            
        
        for (int i = 0; i < m; i++) 
            long result = getresult(n[i]);
            int time =0;
            while(result!=1 && time<1000)
                result = getresult(result);
                time++;
            
            if(result==1)
                System.out.println(true);
            else
                System.out.println(false);
            
        
        
    
    public static long getresult(long result2)
        long result = 0;
        
        while(result2!=0)
            long digit = result2 % 10;
            result = result+ digit*digit;
            result2 = result2/10;
        
        return result;
    

 

3. 合并两个流

AC 

import java.util.Scanner;

public class A18 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        String[] str1 = sc.nextLine().split(" ");
        String[] str2 = sc.nextLine().split(" ");
        int len1 = str1.length;
        int len2 = str2.length;
        String[] result = new String[len1+len2];
        int position = 0;
        int index2 = 0;
        for (int i = 0; i < len1; i++) 
            if((i+1)%4==0 && index2<len2)
                result[position++]=str1[i];
                result[position++]=str2[index2++];
            else
                result[position++]=str1[i];
            
        
        while(index2<len2)
            result[position++]=str2[index2++];
        
        
        for (int i = 0; i < (len1+len2); i++) 
            System.out.print(result[i]);
            if(i!=(len1+len2-1))
                System.out.print(" ");
            
        
    

 

以上是关于快手笔试题的主要内容,如果未能解决你的问题,请参考以下文章

面试中遇到的java笔试题(整理中)

字节跳动笔试题:链表反转

计算机网络笔试题附解析 ——每天学一点,天天都进步

计算机网络笔试题附解析 ——每天学一点,天天都进步

计算机网络笔试题附解析 ——每天学一点,天天都进步

经典PHP笔试题