本篇是繼昨天咱們部門(技術部)的年初能力考覈後,整理出來的文章。以此鞭策本身在今年的工做上,樹立清晰可見的目標,已達到最終預期的效果。算法
1.有一個沙灘,有無窮多的沙子。現有2個空容器,分別可裝爲5kg和6kg的沙子。問題是如何只用這2個容器取得3kg的沙子?(10分)數組
2.燒一根不均勻的繩從頭燒到尾總共須要1個小時,如何用它來判斷半個小時?
如今有3條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?(10分)測試
3.你有四個裝藥丸的藥罐,其中有一個藥罐的藥丸被污染,每一個正常的藥丸都有必定的重量,被污染的藥丸是沒被污染的重量+1,只稱量一次,如何判斷哪一個藥罐的藥被污染了? (10分)code
給四個罐子編上號,一、二、三、4.而後1號拿一個,2號拿2個,3號拿3個,4號拿4個,稱一下,如果都沒被污染,應該重10個重量,如果11個重量就是1號罐,12就是2號罐,13就是3號罐,14就是4號罐(此題不太嚴謹,取相對重量)blog
4.實現一個算法,肯定一個英文字符字符串的全部字符是否全都不一樣。
給定一個string iniString,字符串的長度小於等於100,請返回一個bool值,True表明全部字符全都不一樣,False表明存在相同的字符。(20分)開發
測試樣例:
「aeiou」
返回:True
「BarackObama」
返回:False字符串
思路:把那個字符串所有取出來放進一個數組中,而後對那個數組去重獲得一個新數組,先後兩個數組長度一對比,若是同樣,就沒重複,返回true;若是不同,就返回false。string
function test(str){ var arr=[];//把字符串中全部元素 for(var i=0;i<str.length;i++){ arr.push(str[i]); }; // arr = str.split("").join(""); //這個是通過同事指點,將上一步循環換成更加完美的轉成數組的方式 var newArr = Array.from(new Set(arr)); if(arr.length == newArr.length){ return true; }else{ return false; } } test("aeiou");//true; test("BarackObama");//false;
5.實現一個算法,翻轉一個給定的字符串。
給定一個string iniString,符串的長度小於等於100,請返回一個string,爲翻轉後的字符串。 (20分)it
測試樣例:io
"This is nowcoder" 返回:"redocwon si sihT"
var str = "This is nowcoder"; console.log( str.split("").reverse().join("") );//redocwon si sihT
劃重點對本身的英語水平,一直很自信,沒成想最後竟然把reverse寫成deverse了,最有把握的一道題也涼涼了……
6.利用字符重複出現的次數,編寫一個方法,實現基本的字符串壓縮功能。好比,字符串「aabcccccaaa」經壓縮會變成「a2b1c5a3」。若壓縮後的字符串沒有變短,則返回原先的字符串。
給定一個string iniString爲待壓縮的串(長度小於等於100),保證串內字符均由大小寫英文字母組成,返回一個string,爲所求的壓縮後或未變化的字符串。(30)
測試樣例
"aabcccccaaa" 返回:"a2b1c5a3" "welcometonowcoderrrrr" 返回:"welcometonowcoderrrrr"
//取出字符串,判斷重複中止,添加到新字符串中 function solution(str) { if(typeof str !== "string"){//類型不爲字符串返回空 return ''; } if (str.length <= 1){//直接返回源字符串 return str; } let newStr = ''; let s = str.charAt(0); let num = 1; //跳過第一個 let total = str.length; for (let i = 1; i < total; i++) { let nowS = str.charAt(i); if (nowS === s) { num = num + 1; // 增長數量 if (i + 1 === total) { newStr += `${s}${num}`; // 遍歷結束時,拼接最後的字符串 } } else { newStr += `${s}${num}`; // 拼接字符串 num = 1; // 重置爲1 s = nowS; // 轉爲下一個字符s } } if (newStr.length >= str.length) {// 生成的字符串長度大於等於源字符串 返回源字符串 不然返回生成的字符串 return str; } else { return newStr; } }; console.log( '輸出:', solution('welcometonowcoderrrrr'), solution('aabcccccaaa'), );//輸出: welcometonowcoderrrrr a2b1c5a3
韓老師點評到:相似於前三道的題目,在考公務員、智力競賽這些方面均可以見到,平時也能夠多瞭解瞭解,對開發智力也很有幫助;後面三道,其實本身作過不少遍,也許由於各類不肯定因素,老是展示出了不完美的一面。再接再礪!