前言:注意,网易校招笔试在牛客网进行,在这里使用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); } }