華為2018春招筆試題

2021-08-17 08:49:41 字數 3747 閱讀 9169

給定乙個字串,輸出字串中最長的數字串,並把這個數字串的長度輸出。

請乙個在字串中找出連續最長的數字串,並把這個串的長度返回;如果存在長度相同的連續數字串,返回最後乙個連續數字串;

注意:數字串只需要是數字組成的就可以,並不要求順序,比如數字串「1234」的長度就小於數字串「1359055」,如果沒有數字,則返回空字串(「」)而不是null!

輸入描述:

乙個字串

輸出描述:

輸出最長的數字串,輸出最長數字串個數;

中間以逗號(,)隔開;

示例1

輸入

abcd12345ed125ss123058789

輸出

123058789,9

備註:

1、如果存在長度相同的連續數字串,則輸出最後乙個連續數字串;

2、數字串只需要是數字組成的就可以,並不要求順序,比如數字串「1234」的長度就小於數字串「1359055」;

3、如果沒有數字,則輸出空字串(「」)而不是null;

遍歷字串,遇到數字時開啟內層迴圈直到到達數字結尾,更新最長字元及其長度。

#include

#include

using

namespace

std;

int main()

if(tmp_str.size() > max_len)else

if(tmp_str.size() == max_len)

output = tmp_str;

}tmp_str.clear();

}cout

<","

《只保留字串的首尾。

# include

# include

using namespace std;

bool is_num(char x)

int main()

start = end;

}cout<","

《根據數值占用bit數,按順序從輸入位元組流中解析出對應數值,解析順序按輸入陣列astelement索引公升序;

void decode(unsigned int uiinputlen, unsigned char ainputbyte, unsigned int uielementnum, element_stru astelement);

unsigned int uiinputlen:位元組陣列(流)長度

unsigned char ainputbyte:位元組陣列(流)

unsigned int uielementnum:解析數值個數

element_stru astelement:數值的結構陣列指標,含義如下

struct

element_stru;

輸入描述:

位元組陣列長度uiiutputlen為3;

位元組陣列ainputbyte[3]為,對應二進位制為「0110 0010, 1000 0000, 0000 0000」;

解析數值個數uielementnum為2;

數值[0]的值佔4個bit,即astelement[0].uielementlength = 4;

數值[1]的值佔5個bit,即astelement[1].uielementlength = 5;

輸出描述:

數值[0]的值為6,二進位制為「0110」,即astelement[0].uielementvalue = 6;

數值[1]的值為5,二進位制為「0010 1」,即astelement[1].uielementvalue = 5;

示例1

輸入

3 0x62 0x80 0x00

2 4

5輸出6 5

花了好大功夫才看懂這道題的意思。它的意思是,位元組流中的各元素是以二進位制01的形式連續排列的,指定bit的個數以從二進位制位元組流取出若干bit,然後轉化為十進位制輸出。例如 0x62 0x80 實際上連在一起是 0110 0010 1000 0000,輸入4,表示取4個bit得到0110,轉化為十進位制是6,接著輸入5,表示接著取5個bit得到00101,轉化為十進位制是5。另外,這道題的難點主要在於進製準換以及相關的輸入操作。

#include

#include

#include

using

namespace

std;

int main()

int time; cin >> time;

vector

times(time);

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

vector

bits;

for(int num: nums)

}int start = 0;

long

long result = 0;

for(int time: times)

cout

<< result << endl;

result = 0;

start += time;

}return

0;}

輸入描述:

輸入兩個長整數,以空格隔開

輸出描述:

輸出相乘後的結果

示例1

輸入

-12341234

43214321

輸出

-533318047612114

這題主要考察大數運算,基本上做法都是轉化成字串,實現兩個數的乘法(小學學過的那種),實現關鍵在於進製。此外,還要留意輸入數字可能是負值,在字串處理時要注意。

#include 

#include

#include

using

namespace

std;

int multiply(const

string strmultipliera, const

string strmultiplierb, string &strrst)}}

//判斷結果有幾位

while (lenc--)

}char ch;

for (int i = strrst_length - 1; i >= 0; i--) //把結果放入字串中

if (strrst.empty())//如果結果為0,則輸出字串為「0」

strrst = "0";

return0;}

int main(void)

if(b[0]=='-')

string strrst = "\0";

multiply(a, b, strrst);

if(neg_count==1)

cout

<<"-";

cout

<< strrst0;}

【牛客網】[程式設計題]在字串中找出連續最長的數字串

【部落格】oj 系列之位元組流解析

【部落格】兩個任意長度的長整數相乘(華為oj,c++)

網易春招筆試題

網易2017年3月26日中午的實習生招聘裡面有道程式設計題,大概是說有乙個圍棋格仔,每乙個塊為白色或黑色,小易會找出列方向上顏色相同並且連著的區域,並最長,將其塗為紅色。第一行輸入棋盤的大小,如3,後面依次是棋盤的顏色,w是white白色,b是black黑色 bwbbbb bww 那麼很明顯第一列有...

華為2018春招筆試題目 位元組流解析與長整數相乘

位元組也叫byte,是計算機資料的基本儲存單位,bit儲存內容是0和1,bit是計算機中最小的儲存單位 乙個byte是由8個bit組成,它是最小的可定址單元 1個位元組等於8位二進位制。1b byte 8b bit 八個bit可以儲存基本的元素 2 8數 例如 abcd1234和各種符號 在asci...

2018騰訊春招筆試題(4月5日)

題目描述 小q定義了一種數列稱為翻轉數列 給定整數n和m,滿足n能被2m整除。對於一串連續遞增整數數列1,2,3,4 每隔m個符號翻轉一次,最初符號是 例如n 8,m 2,數列就是 1,2,3,4,5,6 7,8 而n 4,m 1,數列就是 1,2,3,4。小q現在希望你能幫他算算前n項和為多少。輸...