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<Integer> stack = new Stack<Integer>(); 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());
}
}