最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

1.Reverse a String

翻轉(zhuǎn)字符串

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

你的結(jié)果必須得是一個(gè)字符串

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

reverseString("hello");

2.Check for Palindromes

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

如果一個(gè)字符串忽略標(biāo)點(diǎn)符號(hào)、大小寫和空格,正著讀和反著讀一模一樣,那么這個(gè)字符串就是palindrome(回文)。

注意你需要去掉字符串多余的標(biāo)點(diǎn)符號(hào)和空格,然后把字符串轉(zhuǎn)化成小寫來驗(yàn)證此字符串是否為回文。

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

function palindrome(str) {
 // Good luck!
 
 str=str.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,""); //去除標(biāo)點(diǎn)符號(hào),這是我百度的,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") 應(yīng)該返回一個(gè)布爾值
palindrome("eye") 應(yīng)該返回 true.
palindrome("race car") 應(yīng)該返回 true.
palindrome("not a palindrome") 應(yīng)該返回 false.
palindrome("A man, a plan, a canal. Panama") 應(yīng)該返回 true.
palindrome("never odd or even") 應(yīng)該返回 true.
palindrome("nope") 應(yīng)該返回 false.
palindrome("almostomla") 應(yīng)該返回 false.
palindrome("My age is 0, 0 si ega ym.") 應(yīng)該返回 true.
palindrome("1 eye for of 1 eye.") 應(yīng)該返回 false.
palindrome("0_0 (: /-\ :) 0-0") 應(yīng)該返回 true.



*/

3.Title Case a Sentence

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

/*這題很簡(jiǎn)單,主要是要明白 split() 是把字符串分割成數(shù)組 
join() 是把 數(shù)組變成字符串 
toLowerCase() toUpperCase() 大小寫轉(zhuǎn)換,注意,只對(duì)字母有效,其他字符(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

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

如果是,返回true;如果不是,返回false。例如:confirmEnding("Bastian", "n") 應(yīng)該返回 true.  confirmEnding("Connor", "n") 應(yīng)該返回 false.  confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") 應(yīng)該返回 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") 應(yīng)該返回 true.
confirmEnding("Connor", "n") 應(yīng)該返回 false.
confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") 應(yīng)該返回 false.
confirmEnding("He has to give me a new name", "name") 應(yīng)該返回 true.
confirmEnding("He has to give me a new name", "me") 應(yīng)該返回 true.
confirmEnding("He has to give me a new name", "na") 應(yīng)該返回 false.
confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") 應(yīng)該返回 false.
*/

5.Repeat a string repeat a string

重要的事情說3遍!

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

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

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

這是一些對(duì)你有幫助的資源:

•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

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

把一個(gè)數(shù)組arr按照指定的數(shù)組大小size分割成若干個(gè)數(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。

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

這是一些對(duì)你有幫助的資源:

•Boolean Objects
•Array.filter()

例如:

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

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

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

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

/* 
這題注意是對(duì)filter的理解,這是我最開始的代碼,寫的不是很好,沒多大參考價(jià)值
還要注意 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

金克斯的迫擊炮!

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

例如:

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

這是一些對(duì)你有幫助的資源:

•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ù)組的位置,最后返回位置對(duì)應(yīng)的索引。

舉例:where([1,2,3,4], 1.5) 應(yīng)該返回1。因?yàn)?.5插入到數(shù)組[1,2,3,4]后變成[1,1.5,2,3,4],而1.5對(duì)應(yīng)的索引值就是1。

同理,where([20,3,5], 19) 應(yīng)該返回 2。因?yàn)閿?shù)組會(huì)先排序?yàn)?[3,5,20],19插入到數(shù)組[3,5,20]后變成[3,5,19,20],而19對(duì)應(yīng)的索引值就是2。

這是一些對(duì)你有幫助的資源:

•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

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

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

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

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

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

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

例如:

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

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

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

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

這是一些對(duì)你有幫助的資源:

•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ù)組一些基本算法題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • XML+XSL 與 HTML 兩種方案的結(jié)合

    XML+XSL 與 HTML 兩種方案的結(jié)合

    XML+XSL 與 HTML 兩種方案的結(jié)合...
    2007-04-04
  • 隨機(jī)生成10個(gè)不重復(fù)的0-100的數(shù)字(實(shí)例講解)

    隨機(jī)生成10個(gè)不重復(fù)的0-100的數(shù)字(實(shí)例講解)

    下面小編就為大家?guī)硪黄S機(jī)生成10個(gè)不重復(fù)的0-100的數(shù)字(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • JavaScript對(duì)象的特性與實(shí)踐應(yīng)用深入詳解

    JavaScript對(duì)象的特性與實(shí)踐應(yīng)用深入詳解

    這篇文章主要介紹了JavaScript對(duì)象的特性與實(shí)踐應(yīng)用,結(jié)合實(shí)例形式較為深入的分析了javascript對(duì)象的相關(guān)概念、操作方法及注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • IE的fireEvent方法概述及應(yīng)用

    IE的fireEvent方法概述及應(yīng)用

    IE中提供了一個(gè)fireEvent方法大概就是觸發(fā)某個(gè)事件發(fā)生的意思,以為是和onclick()一樣,看來是我自已為是了,有時(shí)間還要多看看javascript的細(xì)節(jié)啊,廣大網(wǎng)友也是啊
    2013-02-02
  • JS如何實(shí)現(xiàn)動(dòng)態(tài)添加的元素綁定事件

    JS如何實(shí)現(xiàn)動(dòng)態(tài)添加的元素綁定事件

    這篇文章主要介紹了JS如何實(shí)現(xiàn)動(dòng)態(tài)添加的元素綁定事件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 獲取JAVASCRIPT時(shí)間戳函數(shù)的5種方法

    獲取JAVASCRIPT時(shí)間戳函數(shù)的5種方法

    JavaScript獲得時(shí)間戳的方法有五種,后四種都是通過實(shí)例化時(shí)間對(duì)象new?Date()?來進(jìn)一步獲取當(dāng)前的時(shí)間戳,JavaScript處理時(shí)間主要使用時(shí)間對(duì)象Date,本文對(duì)js時(shí)間戳函數(shù)獲取方法給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • 淺談JavaScript工具鏈不完全指南

    淺談JavaScript工具鏈不完全指南

    經(jīng)過這么多年的發(fā)展,JavaScript 早已經(jīng)不是當(dāng)年那個(gè)不太起眼的腳本語言。如今的 JavaScript 可以說是風(fēng)光無限,在 Web 前端、移動(dòng)端、服務(wù)端甚至物聯(lián)網(wǎng)設(shè)備上都大展身手,到處都有它的身影。
    2021-05-05
  • 在chrome中window.onload事件的一些問題

    在chrome中window.onload事件的一些問題

    在寫一些關(guān)于圖片操作的代碼的時(shí)候,一般都需要在圖片加載完成之后再執(zhí)行程序。然而在Chorme中(貌似Safari也是)對(duì)window.onload的理解與IE和FF有偏差。
    2010-03-03
  • Bootstrap表單使用方法詳解

    Bootstrap表單使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Bootstrap表單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js switch case default 的用法示例介紹

    js switch case default 的用法示例介紹

    switch case default的用法應(yīng)該存在一部分人不會(huì)使用吧,其實(shí)很簡(jiǎn)單就是每個(gè)case后,一定要加:break;default,就相當(dāng)于else,不會(huì)的朋友可以了解下
    2013-10-10

最新評(píng)論

成安县| 西城区| 民权县| 安溪县| 铜陵市| 舟曲县| 水富县| 平果县| 穆棱市| 溆浦县| 胶南市| 石阡县| 青冈县| 邵东县| 连江县| 乐亭县| 赣州市| 共和县| 唐河县| 色达县| 波密县| 台中市| 沙坪坝区| 大石桥市| 烟台市| 禹州市| 元谋县| 临潭县| 安塞县| 潼关县| 岳普湖县| 祁门县| 宁德市| 赣州市| 辽中县| 岑巩县| 陆川县| 莒南县| 蓬溪县| 花垣县| 阿克陶县|