初衷:
本篇是繼昨天我們部門(技術部)的年初能力考核後,整理出來的文章。以此鞭策自己在今年的工作上,樹立清晰可見的目标,已達到最終預期的效果。
題目:
1.有一個沙灘,有無窮多的沙子。現有2個空容器,分别可裝為5kg和6kg的沙子。問題是如何隻用這2個容器取得3kg的沙子?(10分)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICO2ETM0ITPzZyZlBna9YmJ2ATN9gmJwATNx0zd-IzNhVzM3MzY5gDOzATO2EzLclTMvwlMvwVOxAjMvw1bp5Sd0lGeu4GZj1CZs92ZtIXZzV3Lc9CX6MHc0RHaiojIsJye.jpg)
2.燒一根不均勻的繩從頭燒到尾總共需要1個小時,如何用它來判斷半個小時?
現在有3條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?(10分)
3.你有四個裝藥丸的藥罐,其中有一個藥罐的藥丸被污染,每個正常的藥丸都有一定的重量,被污染的藥丸是沒被污染的重量+1,隻稱量一次,如何判斷哪個藥罐的藥被污染了? (10分)
給四個罐子編上号,1、2、3、4.然後1号拿一個,2号拿2個,3号拿3個,4号拿4個,稱一下,若是都沒被污染,應該重10個重量,若是11個重量就是1号罐,12就是2号罐,13就是3号罐,14就是4号罐(此題不太嚴謹,取相對重量)
4.實作一個算法,确定一個英文字元字元串的所有字元是否全都不同。
給定一個string iniString,字元串的長度小于等于100,請傳回一個bool值,True代表所有字元全都不同,False代表存在相同的字元。(20分)
測試樣例:
“aeiou”
傳回:True
“BarackObama”
傳回:False
思路:把那個字元串全部取出來放進一個數組中,然後對那個數組去重得到一個新數組,前後兩個數組長度一對比,如果一樣,就沒重複,傳回true;如果不一樣,就傳回false。
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分)
測試樣例:
"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
結語:
韓老師點評到:類似于前三道的題目,在考公務員、智力競賽這些方面都可以見到,平時也可以多了解了解,對開發智力也頗有幫助;後面三道,其實自己做過很多遍,也許因為各種不确定因素,總是展現出了不完美的一面。再接再厲!
轉載于:https://www.cnblogs.com/zhengyeye/p/10400097.html