2019年初考覈題

初衷:

本篇是繼昨天咱們部門(技術部)的年初能力考覈後,整理出來的文章。以此鞭策本身在今年的工做上,樹立清晰可見的目標,已達到最終預期的效果。算法

題目:

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

結語:

韓老師點評到:相似於前三道的題目,在考公務員、智力競賽這些方面均可以見到,平時也能夠多瞭解瞭解,對開發智力也很有幫助;後面三道,其實本身作過不少遍,也許由於各類不肯定因素,老是展示出了不完美的一面。再接再礪!

相關文章
相關標籤/搜索