2020華為筆試程式設計題

2021-09-27 03:59:26 字數 3005 閱讀 5582

給定兩個字元集合,乙個為全量字符集,乙個為已占用字符集。已占用的字符集中的字元不能再使用,要求輸出剩餘可用字符集。

輸入描述:輸入為乙個字串,字串中包含了全量字符集和已占用字符集,兩個字符集使用@連線,前面為全量,後面為已占用。

已占用字符集中的字元一定是全量字符集中的字元。

字符集中的字元跟字元之間用英文逗號分隔。

字符集中的字元表示為字元加數字,字元跟數字使用英文冒號分隔,比如a:1,表示1個a字元。字元只考慮英文本母,區分大小寫,數字只考慮正整形,數量不超過100,如果乙個字元都沒被占用,@標識仍然存在,例如a:3,b:5,c:2@

示例1:

輸入a:3,b:5,c:2@a:1,b:2

輸出a:2,b:3,c:2

注意:輸出的字元順序要跟輸入一致!如果某個字元已全被占用,不需要再輸出!

示例2:

輸入a:3,b:5,c:2@a:3,b:2

輸出b:3,c:2

用對映來模擬即可。

#include

#include

#include

#include

#include

#include

using

namespace std;

#define inf 0x3f3f3f3f

typedef

long

long ll;

char ss[

100010];

map<

char

,int

> mp;

char ans[60]

;int

main()

mp[now]

= data;

ans[sum]

= now;

sum++;}

if(ss[i]

=='@'

)break;}

for(

int j=i+

1; j) mp[now]

-= data;}}

for(

int k=

0; kprintf

("\n");

return0;

}

第二題沒看懂題目,時間不太夠。。。

常用的邏輯計算有and(表示為&),or(表示為|),not(表示為!)。

它們的優先順序關係是not > and > or

例如: a|b&c = a|(b&c)

a&b|c&d = (a&b)|(c&d)

!a&b|c = ((!a)&b)|c

輸入描述:測試用例中間無空格,表示式只包含 0 , 1 , ( , ) , & , !, | , 保證輸入為合法輸入,長度不超過128字元,括號可以重複巢狀,例如((!0&1))|0 = 1。

輸出描述:輸出邏輯運算後的最終結果,0或者1

顯然這題直接輸出0或者1可以至少通過50%的測試樣例,如果時間不夠的話就應該想到這種保底的做法,正確做法和實現乙個四則運算計算器的做法差不多,先把字串轉為逆波蘭式,然後計算逆波蘭式,用棧搞來搞去。字元按順序入棧,1.遇到數字,不進棧,直接放入逆波蘭式中;2.遇到計算符,把它與棧頂字元進行優先順序比較,如果棧頂的字元優先順序大或者相同,則棧頂字元放入逆波蘭式中,出棧一次,繼續判斷優先順序直到當前計算符優先順序比棧頂大,那麼當前計算符入棧;3.遇到左括號,直接入棧,遇到右括號,開始出棧並且棧頂元素放入逆波蘭式中,此操作可以保證括號內的運算順序優先於括號外,直到左括號出棧則停止。

最後,把棧中元素全部取出按順序放入逆波蘭式中,由於入棧時保證了優先順序是從小到大的,所以出棧以後逆波蘭式肯定是按優先順序從大到小計算。

計算逆波蘭式,從前往後計算即可,遇到數字就入棧,遇到與和或操作則出棧兩次,把兩個數與(或),把結果入棧,遇到非操作,出棧,取非,結果入棧。

#include

#include

#include

#include

#include

#include

using

namespace std;

#define inf 0x3f3f3f3f

typedef

long

long ll;

char ss[

130]

,ss2[

130]

;int

precedence

(char op)

//運算子優先順序判斷

}void

tonibolan

(char

*s1,

char

*s2)

else

if(ch ==

')')

s.pop();

ch = s1[

++i];}

else

if(ch==

'!'|| ch==

'&'|| ch==

'|')

s.push

(ch)

; ch = s1[

++i];}

else

s2[j++]=

' ';}}

ch = s.

top();

s.pop();

while

(ch !=

'\0'

) s2[j++]=

'\0'

; cout<}int

nibolan

(char

*s)else

if(s[i]

==' '

) i++

;else

if(s[i]

=='!'

)else

if(s[i]

=='&'

)else

if(s[i]

=='|')}

return sd.

top();

}int

main()

華為2020校招筆試程式設計題

剛做完華為的筆試題,簡要描述一下三道程式設計題的解決方法以及python 實現 第一題大致描述 給定兩個已經公升序排序好的的序列a 和b 乙個數r,找出滿足以下條件的的 ai,bj 序列對 1.ai bj 2.bj和ai兩者的距離 滿足 bj ai r 要是該條件不滿足,就從序列b中找出 和ai 距...

2020阿里筆試程式設計題

選擇題很難做,阿里的秋招貌似非常難,大部分崗位都留給了實習生,但是兩道程式設計題不怎麼難。有乙個n n的地圖,乙隻兔子想要穿過這個地圖,給出的地圖是乙個二維陣列map i j 數值表示該位置的毒霧持續時間,當兔子在 x,y 位置時,它可以跳到 x 2,y 或者 x,y 2 位置,跳的時候需要對應等待...

筆試 程式設計題

1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...