2020-春招-華為筆試

吐槽+提醒

前天筆試完,沒(méi)有一道題是AC的,考完再?gòu)?fù)盤,才發(fā)現(xiàn)每道題都沒(méi)有100%通過(guò),都是因?yàn)榇中拇笠獠缓煤脤忣}。希望大家一定要好好看題?。。?/p>

正文

1.比特塊

在一個(gè)int型整數(shù)(對(duì)應(yīng)的比特流)中查找某個(gè)比特塊(本題固定為5,即二進(jìn)制“101”)出現(xiàn)的次數(shù)及首次出現(xiàn)位置,說(shuō)明:
1.輸入次數(shù)和首次出現(xiàn)的位置中間用空格隔開(kāi)。
2.位置從0 開(kāi)始,即最右邊位置為 0,向左依次增加。
3.如果該int型整數(shù)中沒(méi)有找到該比特塊,次數(shù)返回0,位置返回-1。
4.比特位允許重復(fù)使用,如 10101 中間的比特1 可以與前面的01 組成 101,也可以與后面的 10 組成 101。

輸入描述:

一個(gè)任意的十進(jìn)制 int 型整數(shù)

輸出描述:

在輸入整數(shù)對(duì)應(yīng)的二進(jìn)制比特流中,比特塊(101)出現(xiàn)的次數(shù)和首次出現(xiàn)的位置,次數(shù)和位置分別以十進(jìn)制 int 型整數(shù)表示,中間用空格隔開(kāi)

示例輸入:

21

示例輸出:

2 0

代碼(JavaScript V8):
while(line=readline()){
    let num=parseInt(line.trim());
    let count=0, firstIndex=-1, numStr='';

    if(num<0){
        numStr=to2String(num)
    }else{
        numStr=num.toString(2)
    }
    for(let i=numStr.length; i>2; i--){
        if(numStr.slice(i-3,i)=='101'){
            count++;
            firstIndex=numStr.length-i;
        }
    }
    console.log(count+' '+firstIndex);
}

const to2String=(n)=>{
    let output=[],temp;
    for(i=0;i<32;i++){
        temp=n&(1<<31-i);
        temp=temp>>>31-i;
        output.push((temp==0)?'0':'1');
    }
    return output.join('');
}

2.文本解析

某程序員小A,有一種表格數(shù)據(jù)需要存儲(chǔ)在文件中。表格中的每行,由若干個(gè)字驟組成,每個(gè)字段可以是整數(shù)字符串(字符包數(shù)字字母以及特殊字符!@#¥%……&*()",)。小A 設(shè)計(jì)了一種存儲(chǔ)格式,采用文本的方式對(duì)表格數(shù)據(jù)進(jìn)行存儲(chǔ)。文本文件中的每行,代表了表格數(shù)據(jù)中的行數(shù)據(jù)。具體格式如下:
?? 1. 采用號(hào)分隔不同的字段(逗號(hào)前后無(wú)空格);
?? 2. 數(shù)字直接采用 10 進(jìn)制的文本存儲(chǔ);
?? 3. 字符串的存儲(chǔ)規(guī)則如下
? ? ? ? 1)如果字符串中包含逗號(hào)以及雙引號(hào),則字符串必須在頭尾各增加一個(gè)雙引號(hào),且中間的雙引號(hào)需要用連續(xù)兩個(gè)雙引號(hào)來(lái)表示。例如:"a,""b",表示字符串 a,"b
? ? ? ? 2)如果字符串中末包含逗號(hào)以及雙引號(hào),則字符串不強(qiáng)制要求在頭尾增加雙引號(hào),可直接存儲(chǔ)。例如:abc,或者"abc"都可以。
?? 4.空字符串不存儲(chǔ)任何字符,例如:a,,b中,有3 個(gè)字段,分別為a,空字符串,b;
請(qǐng)幫助小A 設(shè)計(jì)個(gè)算法,用來(lái)將單行文本,解析成多個(gè)字段,并輸出。

輸入描述:

用于存儲(chǔ)單行表格數(shù)據(jù)的一行文本。
1、用手分隔不同字段的號(hào)前后一定沒(méi)有空格,程序設(shè)計(jì)者無(wú)需考慮此種異常情況
2、除數(shù)字、字母以及特殊字符!@#¥%……&*()",外,不會(huì)出現(xiàn)其它字符
3、輸入的數(shù)字一定是 10 進(jìn)制合法正整數(shù),不會(huì)出現(xiàn)負(fù)數(shù)、小數(shù)、其它進(jìn)制數(shù)以及格式錯(cuò)誤的 10 進(jìn)制數(shù)

輸出描述:

第一行,字符串格式是否正確,正確輸出字段個(gè)數(shù),不正確輸出ERROR。
如果輸入字符串格式不正確,則輸出結(jié)束。

如果字符串格式正確,則輸出每個(gè)字段的值,每個(gè)字段單獨(dú)占一行。
數(shù)字采用 10 進(jìn)制輸出,字符串輸出解析后的值。

空字符串輸出--

示例輸入:

a,,1,"b,"""

示例輸出:

4
a
--
1
b,"

代碼(JavaScript V8):

正確率我也不敢保證,畢竟我這道題沒(méi)過(guò),但是兩個(gè)可以通過(guò)以下兩個(gè)測(cè)試用例。

  1. a,,1,"b,"""
  2. ,"abc",1,"b,","a,""","6""",bk,,op,"fa","cd
while(str=readline()) {
    let newStr = '',
        flag = false;

    const reg = new RegExp(/[^A-Za-z0-9!@#¥%……&*(),"]/g)
    if (reg.test(str)) {
        console.log('ERROR');
    } else {
        for (let i=0;i<str.length;i++) {
            
            if (str[i] === '"') {
                flag = true;
            }
            if (!flag) {
                if (str[i] === ',') {
                    newStr += ']';
                } else {
                    newStr += str[i];
                }
            } else {
                if (str[i] === '"' && str[i + 1] === '"') {
                    newStr += str[i];
                    i++;
                    newStr += str[i];
                } else if (str[i] === '"' && str[i + 1] === ',') {
                    newStr += str[i];
                    i++;
                    newStr += ']';
                    flag = false;
                } else {
                    newStr += str[i];
                }
            }
        }
        newStr=newStr.replace(/""/g,'[');
        newStr=newStr.replace(/"/g,'');
        newStr=newStr.replace(/\[/g,'"');
    }
    let arr=newStr.split(']')
    console.log(arr.length);
    for(j in arr){
        if(arr[j].length===0){
            console.log('--')
        }else{
            console.log(arr[j])
        }
    }
}

3.社交軟件好友度

有一款社交軟件 APP,假說(shuō)注朋用戶m人(0<m<50),用編號(hào)為 0~m-1,r[i,j]表示用i 和用戶j 好友關(guān)系(r[i][j]=0 代表i和j不是好友,r[i][j]=1~9 代表是好友目數(shù)值代表熟悉程度,數(shù)值越大代表越熟悉,其中r[i][j]=r[j][i],0<=i,j<=m-1)試編制程序,輸出某個(gè)特定用戶i的n 度好
友(1 度好友代表直接好友,2 度好友代表好友的好友,以此類推1<=n<=10),并按推薦值降序輸出好友列表(推薦值相同的好友,按好友編號(hào)升序,其中推薦值是指關(guān)系熟活度之和,比如朋戶i和j是好友,且熟悉度r[i][j]=4 ,j和k是好友且熟活度小r[j][k]=6,且i和k 不是好友即r[i][k]=0,則用戶k 是用戶i的2 度好友且推薦值為可r[i][j]+r[j][k]=10),如果此用戶i 沒(méi)有n 度好友輸出-1。

輸入描述:

輸入一個(gè)整數(shù)T,表示有T組測(cè)試數(shù)據(jù)(0<T<100)。

對(duì)于每組測(cè)試數(shù)據(jù)輸入2行

第1行 輸入3 個(gè)整型數(shù) m,i,n 分別代表用戶數(shù) m,某個(gè)用戶編號(hào) i,n度好友, 即代表本組測(cè)試需要輸出用戶i的n度好友
第2 行 輸入1 個(gè)整型數(shù) k,接下來(lái) 3*k 個(gè)整數(shù)用空格隔開(kāi),每三個(gè)組成關(guān)系對(duì),每個(gè)關(guān)系由3 個(gè)整型數(shù)組成 i,j,w 代表用戶主和的熟悉程度,即 r[i][j]=w,沒(méi)有輸入的關(guān)系默認(rèn)為非好友(r[i][j]=r[j][i]=0)

輸出描述:

輸出T行,每行對(duì)應(yīng)每組測(cè)試數(shù)據(jù)的用戶i的n 度好友,按推薦值降序輸出,推薦值相同的好友按好友編號(hào)升序,編號(hào)間用空格隔開(kāi)。如果沒(méi)有n 度好友輸出-1

示例輸入:

2
10 5 2
13 0 3 5 0 4 9 0 6 8 0 7 5 1 2 6 1 6 1 2 9 7 3 4
3 3 5 3 3 8 3 3 9 3 5 8 9 7 8 9
10 0 2
13 0 3 5 0 4 9 0 6 8 0 7 5 1 2 6 1 6 1 2 9 7 3 4
3 3 5 3 3 8 3 3 9 3 5 8 9 7 8 9

示例輸出:

7 0 4 9
1 5 8 9

代碼(JavaScript V8):
// 等待更新
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,042評(píng)論 0 2
  • 計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)(南開(kāi)版) 1.m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun,它的功能是:將低于平...
    MrSunbeam閱讀 6,617評(píng)論 1 42
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,715評(píng)論 0 5
  • 數(shù)組在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來(lái)。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 4,271評(píng)論 2 13
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,985評(píng)論 0 11

友情鏈接更多精彩內(nèi)容