2018.8.22华为优招笔试题(软件开发)

题目一:

挑选便宜的厂商:

厂商1:大于等于3件打7折,实付大于等于50元免运费10元

厂商2:满10元减2元,实付大于等于99免运费6元

根据输入件数、原价,计算选择哪个厂商便宜(四舍五入精确到分)。输出 1、2、0;

输入描述:

输入一行,第一列是商品件数,取值大于0、小于1万;第二列是原价,大于0、小于1万,单位元,精确到分

输出描述:

一个数代表选择哪个厂商

1代表厂商1,2代表厂商2,0代表相等

示例

输入 4  2.30 ; 输出 2

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double num = sc.nextDouble();//数量
        double price = sc.nextDouble();//价格
        double sum1 = num * price;
        double sum2 = num * price;
        if (num >= 3) {sum1 = sum1 * 0.7;}
        int n = (int)(sum2 / 10);//满足满10减2的件数
        if (sum2 >= 10) {sum2 = sum2 - 2 * (double)n;}
        if (sum1 < 50) {sum1 += 10;}
        if (sum2 < 99) {sum2 += 6;}
        if (sum2 == sum1) {System.out.println(0);
        }else if(sum1 > sum2){System.out.println(2);
        }else{System.out.println(1);}
    }
}

题目二:

给定一个字符串str,返回其最长有效括号子串的长度

输入描述:

1、有效的括号字符串是指只包含小括号,不包含其他字符,且满足括号语法规则的字符串。例如“(())”是有效的,"((a))"、"(()”、“{()}”是无效的。

2、有效括号子串是指输入字符串中满足有括号字符串规则的子串。例如“()(()()(”的有效括号子串包含“()”和“()()”,其中最长的有效括号子串长度即为4。

输出描述:

返回其最长有效括号子串的长度

示例

输入 ()(()()(;输出 4

 

import java.util.Stack;
import java.util.Scanner;
public class Main {
    public static int getMaxLengthOfValidBrackets(String str){
        Stack stack = new Stack();
        int len = 0;
        char chars[] = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == ')' && !stack.empty() && chars[stack.peek()] == '(') {
                stack.pop();
                if (stack.empty()) {
                    len = i + 1;
                }else{
                    if (i - stack.peek() > len) {
                        len = i - stack.peek();
                    }
                }
            }else{
                stack.push(i);
            }
        }
        return len;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(getMaxLengthOfValidBrackets(str));
    }
}

题目三:

DNA序列由四种核苷酸组成,主要是腺嘌呤(A),胞嘧啶(C),鸟嘌呤(G),胸腺嘧啶(T)。每个字母代表一种碱基,两个碱基形成一个碱基对,碱基对的配对规律是固定的,既是:A-T,C-G。典型的他们无间隔的排列在一起,例如序列AAAGTCTGAC。任意长度大于4的遗传核苷酸被称为一个序列,提取重复DNA序列是一种基础的DNA序列特征提取方法,请给出DNA序列的最长重复片段,以及重复片段的长度。

注:1)输出格式为“序列”+“空格”+“序列长度”,如果没有找到重复序列,则输出“空格”+0

2)如果出现多个相同长度的重复序列,则输出第一次出现的在序列中的重复序列及其长度

3)输入可以是全小写的,也可以是全大写的,区分大小写;

输入描述:

一个长度不超过100的DNA序列

输出描述:

最长的重复DNA序列片段,重复片段的长度

示例

输入 AGCTAGCT ;输出 4

import java.util.Scanner;
public class Main {
    public static String getMaxLengthOfSubRepeatString(String str){
        String maxStr = "";
        for (int i = 0; i < str.length(); i++) {
            for (int j = 0; j < i; j++) {
                String temp = "";
                int k = j;int m = i;
                while (i < str.length() && k < str.length() && m < str.length() && 
                str.charAt(m)==str.charAt(k)){
                    m++;k++;
                }
                temp = str.substring(j,k);
                if (temp.length() > maxStr.length()) {
                    maxStr = temp;
                }
            }
        }
        return maxStr;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String result = getMaxLengthOfSubRepeatString(str);
        System.out.println(result+" "+str.length());
    }
}

 

你可能感兴趣的:(面试准备,Java)