欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談js中字符和數(shù)組一些基本算法題

 更新時間:2016年08月15日 10:30:42   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談js中字符和數(shù)組一些基本算法題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近在刷 fcc的題,跟升級打怪一樣,一關一關的過,還挺吸引我的。今天抽時間把 Basic Algorithm Scritping  這部分題做了,根據(jù)一些提示,還是比較簡單的。有些題的處理方式 方法,我想值得借鑒。比如在項目中有時候要處理一個字符,如果想不到一些相關的方法,還挺費事的,所以,在此記錄下來,如果以后遇到一些字符或者數(shù)組處理,可以來翻翻這篇文章,希望以此得到一些提示而不是去翻文檔。

看到此博文的博友,有更好更簡單的代碼或者好的想法,請留言交流(我一直覺得只有學習別人的優(yōu)秀代碼才能進步更快,思維更靈活)。對于初學者,不看代碼自己試著做一遍唄。(以下題目都不用考慮參數(shù)類型,嚴格來說應該對參數(shù)類型做一個判斷,eg:typeOf(arg) === number)

1.Reverse a String

翻轉字符串

先把字符串轉化成數(shù)組,再借助數(shù)組的reverse方法翻轉數(shù)組順序,最后把數(shù)組轉化成字符串。

你的結果必須得是一個字符串

function reverseString(str) {
 str = str.split('').reverse().join('');
 
 return str;
}

reverseString("hello");

2.Check for Palindromes

如果給定的字符串是回文,返回true,反之,返回false。

如果一個字符串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣,那么這個字符串就是palindrome(回文)。

注意你需要去掉字符串多余的標點符號和空格,然后把字符串轉化成小寫來驗證此字符串是否為回文。

函數(shù)參數(shù)的值可以為"racecar","RaceCar"和"race CAR"。

function palindrome(str) {
 // Good luck!
 
 str=str.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,""); //去除標點符號,這是我百度的,js的正則不是很熟悉
 str = str.replace(/\s+/g);
 str = str.toLowerCase();
 var arr = str.split('');
   arr = arr.reverse();
  var str1 = arr.join("");
 if(str === str1){
 return true;}
 return false;
}



palindrome("eye");

/*

palindrome("eye") 應該返回一個布爾值
palindrome("eye") 應該返回 true.
palindrome("race car") 應該返回 true.
palindrome("not a palindrome") 應該返回 false.
palindrome("A man, a plan, a canal. Panama") 應該返回 true.
palindrome("never odd or even") 應該返回 true.
palindrome("nope") 應該返回 false.
palindrome("almostomla") 應該返回 false.
palindrome("My age is 0, 0 si ega ym.") 應該返回 true.
palindrome("1 eye for of 1 eye.") 應該返回 false.
palindrome("0_0 (: /-\ :) 0-0") 應該返回 true.



*/

3.Title Case a Sentence

確保字符串的每個單詞首字母都大寫,其余部分小寫。(eg:titleCase("I'm a little tea pot") 應該返回 "I'm A Little Tea Pot".   titleCase("sHoRt AnD sToUt") 應該返回 "Short And Stout".)

/*這題很簡單,主要是要明白 split() 是把字符串分割成數(shù)組 
join() 是把 數(shù)組變成字符串 
toLowerCase() toUpperCase() 大小寫轉換,注意,只對字母有效,其他字符(eg:/,!@)無效
*/

function titleCase(str) {
 str = str.split(" ");//按照空格把字符串分割成數(shù)組
  for (var i = 0; i < str.length; i++) {
    str[i] = str[i].toLowerCase();
    str[i] = str[i].substring(0, 1).toUpperCase() + str[i].substring(1);
  }
  return str.join(" ");//通過空格把數(shù)組連接成字符串
}

titleCase("I'm a little tea pot");

4.Confirm the Ending

檢查一個字符串(str)是否以指定的字符串(target)結尾。

如果是,返回true;如果不是,返回false。例如:confirmEnding("Bastian", "n") 應該返回 true.  confirmEnding("Connor", "n") 應該返回 false.  confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") 應該返回 false.

function confirmEnding(str, target) {
 // "Never give up and good luck will find you."
 // -- Falcor
 
 return str.substr(str.length-target.length) == target ? true:false;
}

confirmEnding("Bastian", "n");
confirmEnding("He has to give me a new name", "na");
/*
confirmEnding("Bastian", "n") 應該返回 true.
confirmEnding("Connor", "n") 應該返回 false.
confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") 應該返回 false.
confirmEnding("He has to give me a new name", "name") 應該返回 true.
confirmEnding("He has to give me a new name", "me") 應該返回 true.
confirmEnding("He has to give me a new name", "na") 應該返回 false.
confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") 應該返回 false.
*/

5.Repeat a string repeat a string

重要的事情說3遍!

重復一個指定的字符串 num次,如果num是一個負數(shù)則返回一個空字符串。例如:

repeat("*", 3) 應該返回"***".
repeat("abc", 3) 應該返回"abcabcabc".
repeat("abc", 4) 應該返回"abcabcabcabc".
repeat("abc", 1) 應該返回"abc".
repeat("*", 8) 應該返回"********".
repeat("abc", -2) 應該返回"".

當你完成不了挑戰(zhàn)的時候,記得開大招'Read-Search-Ask'。

這是一些對你有幫助的資源:

•Global String Object

function repeat(str, num) {
 // repeat after me
 var newstr = str;
 if(num >1){
  for(var i = 1; i< num ; i ++){
   str +=newstr;
  }
  return str;
 }else if(num == 1){
  return str;
 }else{
  return "";
 }
 
}

repeat("abc", 3);
repeat("*", 3);

6.Chunky Monkey

猴子吃香蕉可是掰成好幾段來吃哦!

把一個數(shù)組arr按照指定的數(shù)組大小size分割成若干個數(shù)組塊。

例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];

chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];

function chunk(arr, size) {
 // Break it up.
var arr1 = [];
  for (var i = 0; i < arr.length; i = i + size) {
    var arr2 = arr;
    arr1.push(arr2.slice(i, i + size));
  }
  return arr1;
}

chunk(["a", "b", "c", "d"], 2);

7.Falsy Bouncer

真假美猴王!

刪除數(shù)組中的所有假值。

在JavaScript中,假值有false、null、0、""、undefined 和NaN。

當你完成不了挑戰(zhàn)的時候,記得開大招'Read-Search-Ask'。

這是一些對你有幫助的資源:

•Boolean Objects
•Array.filter()

例如:

bouncer([7, "ate", "", false, 9]) 應該返回 [7, "ate", 9].

bouncer(["a", "b", "c"])應該返回 ["a", "b", "c"].

bouncer([false, null, 0, NaN, undefined, ""]) 應該返回 [].

bouncer([1, null, NaN, 2, undefined]) 應該返回 [1, 2].

/* 
這題注意是對filter的理解,這是我最開始的代碼,寫的不是很好,沒多大參考價值
還要注意 NaN 比較。 自己不等于自己(NaN != NaN )
*/

function bouncer(arr) {
 // Don't show a false ID to this bouncer.
 var arr1 =[];
  var j = 0;
  arr.filter(function(val, index) {
    if (val === false || val === null || val === 0 || val === "" || val === undefined || val !== val) {
      arr1.push(index);
    }
  });
  var len = arr1.length;

  for(var i = 0; i < len ; i++){
     arr.splice(arr1[i]-j,1);
     j++;
  }
 return arr;
}

bouncer([7, "ate", "", false, 9]);

8.Seek and Destroy

金克斯的迫擊炮!

實現(xiàn)一個摧毀(destroyer)函數(shù),第一個參數(shù)是待摧毀的數(shù)組,其余的參數(shù)是待摧毀的值。

例如:

destroyer([1, 2, 3, 1, 2, 3], 2, 3) 應該返回 [1, 1].
destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3) 應該返回 [1, 5, 1].
destroyer([3, 5, 1, 2, 2], 2, 3, 5) 應該返回 [1].
destroyer([2, 3, 2, 3], 2, 3) 應該返回 [].
destroyer(["tree", "hamburger", 53], "tree", 53) 應該返回["hamburger"].

這是一些對你有幫助的資源:

•Arguments object
•Array.filter()

function destroyer(arr) {
 // Remove all the values
 var tempArguments = arguments;
 return arr.filter(function(entry) {
  for(var i = 1; i< tempArguments.length; i++) {
   if (entry == tempArguments[i]) {
    return false;
   }
  }
  return true;
 });
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

9.Where do I belong

我身在何處?

先給數(shù)組排序,然后找到指定的值在數(shù)組的位置,最后返回位置對應的索引。

舉例:where([1,2,3,4], 1.5) 應該返回1。因為1.5插入到數(shù)組[1,2,3,4]后變成[1,1.5,2,3,4],而1.5對應的索引值就是1。

同理,where([20,3,5], 19) 應該返回 2。因為數(shù)組會先排序為 [3,5,20],19插入到數(shù)組[3,5,20]后變成[3,5,19,20],而19對應的索引值就是2。

這是一些對你有幫助的資源:

•Array.sort()

function where(arr, num) {
 // Find my place in this sorted array.
 //注意sort() 排序規(guī)則
 arr.sort(function(a,b){
   return a- b;
 });

 for(var i =0;i<arr.length;i++){
   
  if(arr[i]>num | arr[i] == num){
    
   return i;
  }
 }
 return arr.length;
}



where([5, 3, 20, 3], 5);

10.Caesars Cipher

讓上帝的歸上帝,凱撒的歸凱撒。

下面我們來介紹風靡全球的凱撒密碼Caesar cipher,又叫移位密碼。

移位密碼也就是密碼中的字母會按照指定的數(shù)量來做移位。

一個常見的案例就是ROT13密碼,字母會移位13個位置。由'A' ↔ 'N', 'B' ↔ 'O',以此類推。

寫一個ROT13函數(shù),實現(xiàn)輸入加密字符串,輸出解密字符串。

所有的字母都是大寫,不要轉化任何非字母形式的字符(例如:空格,標點符號),遇到這些特殊字符,跳過它們。

例如:

rot13("SERR PBQR PNZC") 應該解碼為 "FREE CODE CAMP"

rot13("SERR CVMMN!") 應該解碼為 "FREE PIZZA!"

rot13("SERR YBIR?") 應該解碼為 "FREE LOVE?"

rot13("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.") 應該解碼為 "THE QUICK BROWN DOG JUMPED OVER THE LAZY FOX."

這是一些對你有幫助的資源:

•String.charCodeAt()
•String.fromCharCode()

function rot13(str) { // LBH QVQ VG!
  var arr = str.toUpperCase().split(" ");
  var str1 = [];
  for (var i = 0; i < arr.length; i++) {
    var arr1 = arr[i].split("");
    for (var j = 0; j < arr1.length; j++) {
      var num = arr1[j].charCodeAt();
      if (num >= 65 && num <= 90) {
        arr1[j] = num + 13 > 90 ? String.fromCharCode(64 + (num + 13 - 90)):String.fromCharCode(num + 13); //64 + (num + 13 - 90) 要明白為什么是64 ,
      }

    }
    str1.push(arr1.join(""));
  }
  return str1.join(" ");
}

// Change the inputs below to test
rot13("SERR PBQR PNZC");

以上這篇淺談js中字符和數(shù)組一些基本算法題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • JavaScript判斷頁面是否滾動到底部的技巧

    JavaScript判斷頁面是否滾動到底部的技巧

    在 JavaScript 中,我們可以通過一些技巧來判斷頁面是否滾動到底部,本文將介紹一些常用的方法,幫助你在項目中實現(xiàn)這一功能,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • JavaScript中set與get方法用法示例

    JavaScript中set與get方法用法示例

    這篇文章主要介紹了JavaScript中set與get方法用法,簡單描述了set與get方法的功能,并結合實例形式分析了set與get方法的具體使用技巧,需要的朋友可以參考下
    2018-08-08
  • JavaScript的詞法結構精華篇

    JavaScript的詞法結構精華篇

    今天小編就為大家分享一篇關于JavaScript的詞法結構精華篇,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Javascript 高性能之遞歸,迭代,查表法詳解及實例

    Javascript 高性能之遞歸,迭代,查表法詳解及實例

    這篇文章主要介紹了Javascript 高性能之遞歸,迭代,查表法詳解及實例的相關資料,需要的朋友可以參考下
    2017-01-01
  • 統(tǒng)計出現(xiàn)最多的字符次數(shù)的js代碼

    統(tǒng)計出現(xiàn)最多的字符次數(shù)的js代碼

    一小段代碼,經(jīng)常出現(xiàn)在面試筆試題中的:統(tǒng)計一個字符串中出現(xiàn)最多的字符的次數(shù),可以是英文或者數(shù)字。
    2010-12-12
  • 微信小程序實現(xiàn)井字棋游戲

    微信小程序實現(xiàn)井字棋游戲

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 微信小程序自定義滾動選擇器

    微信小程序自定義滾動選擇器

    這篇文章主要為大家詳細介紹了微信小程序自定義滾動選擇器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 分享15個JavaScript的重要數(shù)組方法

    分享15個JavaScript的重要數(shù)組方法

    這篇文章主要介紹了分享15個JavaScript的重要數(shù)組方法,數(shù)組方法的重要一點是有些是可變的,有些是不可變的。在決定針對特定問題使用哪種方法時,務必牢記,下文就來分享重要數(shù)組方法,需要的小伙伴可以參考一下
    2022-05-05
  • jQuery scrollFix滾動定位插件

    jQuery scrollFix滾動定位插件

    這篇文章主要介紹了jQuery scrollFix滾動定位插件,當用戶向上或向下滾動頁面到一定位置時,目標元素開始固定定位(position:fixed),當回滾到原位置時目標元素恢復到原狀態(tài),需要的朋友可以參考下
    2015-04-04
  • javascript加號"+"的二義性說明

    javascript加號"+"的二義性說明

    單個的加號作為運算符在 JavaScript 中有三種作用。
    2013-03-03

最新評論