前言:注意,網易校招筆試在牛客網進行,在這裏使用js完成算法題時,不要寫一個function() {}就認爲完成了題目,那樣經過率是0%(題主就是這樣,估計筆試掛了。。。)
應該以這種完整的輸入輸出方式完成算法
while(line = readline()) { //your function print(result) }
小易有一些彩色的磚塊。每種顏色由一個大寫字母表示。各個顏色磚塊看起來都徹底同樣。如今有一個給定的字符串s,s中每一個字符表明小易的某個磚塊的顏色。小易想把他全部的磚塊排成一行。若是最多存在一對不一樣顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他全部磚塊排成漂亮的一行。(若是兩種方式所對應的磚塊顏色序列是相同的,那麼認爲這兩種方式是同樣的。)
例如: s = "ABAB",那麼小易有六種排列的結果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中只有"AABB"和"BBAA"知足最多隻有一對不一樣顏色的相鄰磚塊。
輸入描述:數組
輸入包括一個字符串s,字符串s的長度length(1 ≤ length ≤ 50),s中的每個字符都爲一個大寫字母(A到Z)。code
輸出描述:對象
輸出一個整數,表示小易能夠有多少種方式。字符串
輸入例子1:it
ABABio
輸出例子1:function
2test
//代碼僅供參考 while(line = readline()) { //切割輸入 var arr = line.split(''); //使用對象存儲有多少種字符及其出現次數 var obj = {}; var len = arr.length; for(var i=0; i<len; i++) { if(obj[arr[i]]) { obj[arr[i]]++; }else { obj[arr[i]] = 1; } } //使用Object.keys()方法獲取鍵數組 var arr2 = Object.keys(obj); if (arr2.length > 2) { print(0) }else if(arr2.length == 2) { print(2) }else { print(1) } }
若是一個01串任意兩個相鄰位置的字符都是不同的,咱們就叫這個01串爲交錯01串。例如: "1","10101","0101010"都是交錯01串。
小易如今有一個01串s,小易想找出一個最長的連續子串,而且這個子串是一個交錯01串。小易須要你幫幫忙求出最長的這樣的子串的長度是多少。
輸入描述:循環
輸入包括字符串s,s的長度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'
輸出描述:
輸出一個整數,表示最長的知足要求的子串長度。
輸入例子1:
111101111
輸出例子1:
3
while(line = readline()) { var patt = /(10)+/g; //num爲最大交錯子串長度 var num = 0; //arr爲匹配正則的子串數組 var arr = line.match(patt); //尋找最長10重複子串 if (arr != null) { //maxLen爲10子串長度,maxLenStr爲子串內容 var maxLen = 0; var maxLenStr = ''; var len = arr.length; for(var i=0; i<len; i++) { if (arr[i].length > maxLen) { maxLen = arr[i].length; maxLenStr = arr[i]; } } num = maxLen; //找到最長10重複子串起始點,判斷其先後是否知足交錯 var maxLenIndex = line.indexOf(maxLenStr); if (line[maxLenIndex-1] == 0) { num++; } if (line[maxLenIndex+maxLen] == 1) { num++; } print(num); }else if((/(01)/g).test(line)) { print(2); }else { print(1); } }
小易爲了向他的父母表現他已經長大獨立了,他決定搬出去本身居住一段時間。一我的生活增長了許多花費: 小易天天必須吃一個水果而且須要天天支付x元的房屋租金。當前小易手中已經有f個水果和d元錢,小易也能去商店購買一些水果,商店每一個水果售賣p元。小易爲了表現他獨立生活的能力,但願能獨立生活的時間越長越好,小易但願你來幫他計算一下他最多能獨立生活多少天。
輸入描述:
輸入包括一行,四個整數x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割
輸出描述:
輸出一個整數, 表示小易最多能獨立生活多少天。
輸入例子1:
3 5 100 10
輸出例子1:
11
解析:該題也很簡單,其實就是分兩種狀況,一種是須要買水果,另外一種不須要買水果。先判斷假使水果數量充足,只花費房租的問題。
while (line = readline()) { //以空格分割輸入 var arr = line.split(' '); //記得對字符串轉數字 [x,f,d,p] = arr.map(x=>parseInt(x,10)); //分兩種狀況判斷 if (Math.floor(d/x) <= f){ print(Math.floor(d/x)); }else { var day = f; d -= f*x; day += Math.floor(d/(x+p)); print(day); } }