1. 程式人生 > >網易2017提前提筆試編程題

網易2017提前提筆試編程題

完全 urn 支付 i+1 一行 判斷 需要 () math

1.彩色磚塊

  小易有一些彩色的磚塊。每種顏色由一個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有一個給定的字符串s,s中每個字符代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麽這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麽認為這兩種方式是一樣的。)
例如: s = "ABAB",那麽小易有六種排列的結果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中只有"AABB"和"BBAA"滿足最多只有一對不同顏色的相鄰磚塊。

輸入描述

:輸入包括一個字符串s,字符串s的長度length(1 ≤ length ≤ 50),s中的每一個字符都為一個大寫字母(A到Z)。

輸出描述:輸出一個整數,表示小易可以有多少種方式。

//題目出的很誤導人,其實意思就是判斷給出的字符串中有多少種不同種類的字符,超過兩種就是不合適的
while(line = readline()){
    var arr = line.trim().split(‘‘);
    var subArr = [];
    for(var i=0; i<arr.length; i++){
        if(subArr.indexOf(arr[i]) == -1){
            subArr.push(arr[i]);
        }
    }
    
if(subArr.length == 2){ console.log(2); }else if(subArr.length == 1){ console.log(1); }else{ console.log(0); } }

2. 01串的最長子串求取

  如果一個01串任意兩個相鄰位置的字符都是不一樣的,我們就叫這個01串為交錯01串。例如: "1","10101","0101010"都是交錯01串。
小易現在有一個01串s,小易想找出一個最長的連續子串,並且這個子串是一個交錯01串。小易需要你幫幫忙求出最長的這樣的子串的長度是多少。

輸入描述:輸入包括字符串s,s的長度length(1 ≤ length ≤ 50),字符串中只包含‘0‘和‘1‘

輸出描述:輸出一個整數,表示最長的滿足要求的子串長度。

//直接遍歷整個字符串,記錄每次的長度,並取最大值
while(line = readline()){
    var str = line.trim();
    var len = str.length;
    if(len<=1){
        console.log(len);
    }else{
        var k=1;
        var max=1;
        for(var i=0; i<str.length-1; i++){
            if(str[i] !== str[i+1]){
                k++;
            }else{
                k=1;
            }
            if(k > max){
                max = k;
            }
        }
        console.log(max);       
    }   
}

3. 獨立的小易

  小易為了向他的父母表現他已經長大獨立了,他決定搬出去自己居住一段時間。一個人生活增加了許多花費: 小易每天必須吃一個水果並且需要每天支付x元的房屋租金。當前小易手中已經有f個水果和d元錢,小易也能去商店購買一些水果,商店每個水果售賣p元。小易為了表現他獨立生活的能力,希望能獨立生活的時間越長越好,小易希望你來幫他計算一下他最多能獨立生活多少天。

輸入描述:輸入包括一行,四個整數x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割

輸出描述:輸出一個整數, 表示小易最多能獨立生活多少天。

//註意分兩種情況
while(line = readline()){
    var lines = line.trim().split(‘ ‘);
    var arr = lines.map(function(item){
        return parseInt(item);
    });
    var x = arr[0],
        f = arr[1],
        d = arr[2],
        p = arr[3];
    if(Math.floor(d/x)<=f){
        console.log(Math.floor(d/x));
    }else{
        console.log(Math.floor((d-f*x)/(x+p))+f);
    }
}

網易2017提前提筆試編程題