大数据 爬虫Python AI Sql玩转大数据大数据

快手校招真题五

2020-05-20  本文已影响0人  Tim在路上

字符串最大乘积

题目描述
已知一个字符串数组words,要求寻找其中两个没有重复字符的字符串,使得这两个字符串的长度乘积最大,输出这个最大的乘积。如:
words=["abcd","wxyh","defgh"], 其中不包含重复字符的两个字符串是"abcd"和"wxyh",则输出16
words=["a","aa","aaa","aaaa"], 找不到满足要求的两个字符串,则输出0
输入描述:
Input:

["a","ab","abc","cd","bcd","abcd"]
输出描述:
Output:

4




import java.util.*;

public class Main {

    // 统计第一大

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        String[] words = line.substring(1, line.length() - 1).split(",");
        int max = 0;
        for (int i=0;i<words.length-1;i++){
            for (int j=i+1;j<words.length;j++){
                if (!isDup(words[i],words[j])){
                    // 这里主要原输入字符带双引号
                    int len = (words[i].length()-2) * (words[j].length()-2);
                    max = Math.max(max,len);
                }
            }
        }
        System.out.println(max);
    }

    // 判断两个字符串是否有重复字符
    public static boolean isDup(String s1, String s2){
        for (int i=0;i<26;i++){
            String c = (char) ('a' + i) + "";
            if(s1.contains(c) && s2.contains(c)){
                return true;
            }
        }
        return false;
    }
}

今年的第几天

输入年、月、日,计算该天是本年的第几天。

输入:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出:

输入可能有多组测试数据,对于每一组测试数据,

输出一个整数,代表Input中的年、月、日对应本年的第几天。

输入描述:
输入:1990 9 20
输出描述:
输入:263

import java.util.*;

public class Main {

    // 统计第一大

    static int[] months = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int year = in.nextInt();
        int month = in.nextInt();
        int day = in.nextInt();
        int total = 0;
        boolean leap = isLeap(year);
        for (int i=1;i<month;i++){
           if (leap && i == 2){
               total += 1;
           }
           total += months[i];
        }
        System.out.println(total+day);

    }

    public static boolean isLeap(int year){
        if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
            return true;
        }
        return false;
    }

}

数字序列的第n位值

有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。。。(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少
输入描述:
输入为一个整数n
输出描述:
输出一个整数,即第n项的值

public class Main {

    // 统计第一大

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int copy = n;
        for (int i=1;i<=copy;i++){
            n = n - i;
            if (n <= 0){
                System.out.println(i);
                break;
            }
        }
    }

}

a/b

求a/b的小数表现形式。如果a可以整除b则不需要小数点。如果是有限小数,则可以直接输出。如果是无限循环小数,则需要把小数循环的部分用"()"括起来。

输入描述:
两个整数a和b,其中

0 <= a <= 1000 000

1 <= b <= 10 000
输出描述:
一个字符串,该分数的小数表现形式

1 6

0.1(6)

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = a%b;//余数是本题的关键
        int d = a/b;
        System.out.print(d);//打印整数部分
        if(c == 0) return;
        System.out.print(".");//打印小数点
        List<Integer> v1 = new ArrayList<>();//每一步的商数
        List<Integer> v2 = new ArrayList<>();//每一步的余数,有相同余数的时候开始循环
        v2.add(c);
        boolean flag = true;//标记是否循环
        int p = 0;//标记循环开始的位数
        while(true){
            // 这里只用乘以10 ,可以保存每一位0
            int temp = 10*c;//每一步的余数乘10,变成下一步的被除数
            int e = temp/b;
            int f = temp%b;//这次的余数
            v1.add(e);
            if(f == 0){
                flag = false;//除尽了,就不是循环小数
                break;
            }
            if(v2.contains(f)) {
                p = v2.indexOf(f);//标记循环开始的位数
                break;
            }
            v2.add(f);
            c = f;//更新余数
        }
        for(int i = 0; i < v1.size(); ++i) {//打印小数部分
            if(flag && i == p) System.out.print("(");//循环开始时,打一个括号
            System.out.print(v1.get(i));
        }
        if(flag) System.out.print(")");//循环小数收尾的括号
    }
}
上一篇 下一篇

猜你喜欢

热点阅读