華為筆試題(7)

2021-08-07 23:42:06 字數 3910 閱讀 7533

一、

編寫乙個程式,將輸入字串中的字元按如下規則排序。

規則 1 :英文本母從 a 到 z 排列,不區分大小寫。

如,輸入: type 輸出: epty

規則 2 :同乙個英文本母的大小寫同時存在時,按照輸入順序排列。

如,輸入: baba 輸出: aabb

規則 3 :非英文本母的其它字元保持原來的位置。

如,輸入: by?e 輸出: be?y

樣例:

輸入描述:

輸出描述:

示例1

輸入 a famous saying: much ado about nothing (2012/8).

輸出 a aaaabc dfgghh: iimm nnn oooos sttuuuy (2012/8).

*/

public

class

main }}

for(int i = 0; i < chs.length; i++)

}system.out.println(sb.tostring());

}sc.close();

}}

二、

乙個dna序列由a/c/g/t四個字母的排列組合組成。

g和c的比例(定義為gc-ratio)是序列中g和c兩個字母的總的出現次數除以總的字母數目(也就是序列長度。

在基因工程中,這個比例非常重要。因為高的gc-ratio可能是基因的起始點。

給定乙個很長的dna序列,以及要求的最小子序列長度,研究人員經常會需要在其中找出gc-ratio最高的子串行。

輸入描述:

輸入乙個string型基因序列,和int型子串的長度

輸出描述:

找出gc比例最高的子串,如果有多個輸出第乙個的子串

示例1

輸入 aaatcacggagaaaccaggtcagctgtctttacctcgc

19 輸出

cacggagaaaccaggtcag

public

class

main

}if(cnt > max)

}system.out.println(str.substring(index, index + n));

}sc.close();

}}

三、

問題描述:給出4個1-10的數字,通過加減乘除,得到數字為24就算勝利

輸入:

4個1-10的數字。[數字允許重複,測試用例保證無異常數字]

輸出:

true or false

輸入描述:

輸入4個int整數

輸出描述:

返回能否得到24點,能輸出true,不能輸出false

示例1

輸入 7 2 1 10

輸出 true

*/

public

class

main

system.out.println(process(a,new

boolean[4], 0));

}sc.close();

}private

static

boolean

process(int a, boolean vis,double res)

vis[i]=false;}}

if(res==24)else

}}

四、

輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,

相同成績都按先錄入排列在前的規則處理。

0為從高到底排序,1為從低到高排序

輸入描述:

輸入多行,先輸入要排序的人的個數,然後分別輸入他們的名字和成績,以乙個空格隔開

輸出描述:

按照指定方式輸出名字和成績,名字和成績之間以乙個空格隔開

示例1

輸入 3

0 fang 90

yang 50

ning 70

輸出 fang 90

ning 70

yang 50

public

class

main

sort(name, score, n, flag);

for(int i = 0; i < n; i++)

}sc.close();

}private

static

void

sort(string name, int score, int n, int flag) }}

}else

if(flag == 1) }}

}}

}

五、

如果a是個x行y列的矩陣,b是個y行z列的矩陣,把a和b相乘,其結果將是另乙個x行z列的矩陣c。

輸入描述:

輸入說明:

1、第乙個矩陣的行數

2、第乙個矩陣的列數和第二個矩陣的行數

3、第二個矩陣的列數

4、第乙個矩陣的值

5、第二個矩陣的值

輸出描述:

輸出兩個矩陣相乘的結果

示例1

輸入 2 2 2

3 8

8 0

9 0

18 9

輸出 171 72

72 0

public

class

main

}for(int i = 0; i < aj; i++)

}int c = multi(a, b);

for(int i = 0; i < ai; i++)

system.out.println(c[i][bj - 1]);}}

sc.close();

}public

static

intmulti(int a,int b)

}

六、

矩陣乘法的運算量與矩陣乘法的順序強相關。

例如:

a是乙個50×10的矩陣,b是10×20的矩陣,c是20×5的矩陣

計算a*b*c有兩種順序:((ab)c)或者(a(bc)),前者需要計算15000次乘法,後者只需要3500次。

編寫程式計算不同的計算順序需要進行的乘法次數

輸入描述:

輸入多行,先輸入要計算乘法的矩陣個數n,每個矩陣的行數,列數,總共2n的數,最後輸入要計算的法則

輸出描述:

輸出需要進行的乘法次數

示例1

輸入 3

50 10

10 20

20 5

(a(bc))

輸出 3500

public

class

main

string str = sc.next();

system.out.println(process(n, a, str.tochararray()));

}sc.close();

}public

static

intprocess(int n, int a, char chs)else

if(chs[i] >= 'a' && chs[i] <= 'z') else

if(chs[i] == ')') }}

return res;

}}

華為筆試題

int a nsize 其中隱藏著若干 0,其餘非 0整數,寫乙個函式 int func int a,int nsize 使a 把0移至後面,非 0整數移至 陣列前面並保持有序,返回值為原資料中第乙個元素為0 的下標。盡可能不使用輔助空間且考慮效率及異常問題,注釋規範且給出設計思路 include ...

華為筆試題

某軟體需要實現建議的cd key演算法,輸入3個正整數,以空格隔開,根據這3個整數生成cd key字串,輸出格式 x x x xxyy,包括16個字元,以短劃線分開,其中,cd key最後兩個yy是用於cd key的自校驗,確保cd key本身是合法的。cdkey使用的字元表23456789abcd...

華為筆試題

輸入描述 輸入乙個字串,字串中包含了全量字符集和已占用字符集,兩個字符集用 相連。前的字符集合為全量字符集,後的字符集為已占用字元集合。已占用字符集中的字元一定是全量字符集中的字元。字符集中的字元跟字元之間使用英文逗號分隔。字符集中的字元表示為字元加數字,字元跟數字使用英文冒號分隔,比如a 1,表示...