亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 09:14:36
字體:
來源:轉載
供稿:網友

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

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

1.Reverse a String

翻轉字符串

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

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

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

2.Check for Palindromes

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

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

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

函數參數的值可以為"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() 是把字符串分割成數組 join() 是把 數組變成字符串 toLowerCase() toUpperCase() 大小寫轉換,注意,只對字母有效,其他字符(eg:/,!@)無效*/function titleCase(str) { str = str.split(" ");//按照空格把字符串分割成數組  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(" ");//通過空格把數組連接成字符串}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是一個負數則返回一個空字符串。例如:

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

當你完成不了挑戰的時候,記得開大招'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

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

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

例如: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

真假美猴王!

刪除數組中的所有假值。

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

當你完成不了挑戰的時候,記得開大招'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

金克斯的迫擊炮!

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

例如:

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

我身在何處?

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

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

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

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

•Array.sort()

function where(arr, num) { // Find my place in this sorted array. //注意sort() 排序規則 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,又叫移位密碼。

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

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

寫一個ROT13函數,實現輸入加密字符串,輸出解密字符串。

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

例如:

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 testrot13("SERR PBQR PNZC");

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品白嫩美女在线观看| 成人免费在线视频网址| 在线看日韩欧美| 精品中文字幕久久久久久| 亚洲人成电影在线观看天堂色| 久久久女人电视剧免费播放下载| 日韩欧美在线免费| 中文字幕亚洲欧美日韩高清| 成人a免费视频| 欧美亚洲另类视频| 中文字幕亚洲综合久久| 91国自产精品中文字幕亚洲| 欧美国产激情18| www日韩欧美| 国产91成人在在线播放| 韩国19禁主播vip福利视频| 国产精品美女久久| 欧美午夜宅男影院在线观看| 色偷偷噜噜噜亚洲男人的天堂| 成人女保姆的销魂服务| 亚洲国产欧美一区二区三区久久| 亚洲黄色有码视频| 国内精品久久久久久久久| 国产精品亚洲第一区| 国产丝袜一区二区三区免费视频| 狠狠久久五月精品中文字幕| 久久精品91久久久久久再现| 青草青草久热精品视频在线网站| 久久久国产一区| 欧美日韩久久久久| 国产噜噜噜噜噜久久久久久久久| 欧美寡妇偷汉性猛交| 成人妇女免费播放久久久| 9.1国产丝袜在线观看| 国产91精品视频在线观看| 国产精品综合不卡av| 欧美激情亚洲综合一区| 中文字幕一精品亚洲无线一区| 欧美激情xxxx性bbbb| 91日本视频在线| 亚洲成人网久久久| 亚洲成色777777在线观看影院| 亚洲一区二区三区毛片| 亚洲在线免费看| 国产精品2018| 欧美成aaa人片免费看| 欧美黑人巨大xxx极品| 色偷偷av亚洲男人的天堂| 亚洲国产精品高清久久久| 精品久久久久久久久久久久久久| 精品美女永久免费视频| 亚洲国产精彩中文乱码av| 欧美视频二区36p| 欧美日韩成人在线观看| 日本aⅴ大伊香蕉精品视频| 亚洲国产毛片完整版| 日韩一区视频在线| 久久夜色精品亚洲噜噜国产mv| 中文字幕精品久久| 国产成人精品日本亚洲专区61| 欧美特黄级在线| 日韩有码在线观看| 91在线观看免费| www.久久久久| 国产精品三级美女白浆呻吟| 国产精品自拍偷拍视频| 亚洲精美色品网站| 国产一区视频在线| 欧美性开放视频| 国产精品扒开腿做爽爽爽男男| 亚洲第一av网| 久久九九热免费视频| 久久久亚洲影院你懂的| 北条麻妃一区二区三区中文字幕| 最近的2019中文字幕免费一页| 国产99在线|中文| 日韩性生活视频| 亚洲成人亚洲激情| 色999日韩欧美国产| 久久久久久com| 国产91精品久久久久久| 国产精品久久久久久久美男| 日韩视频精品在线| 国产精品网站视频| 日韩高清免费在线| 国产精品视频地址| www.欧美精品一二三区| 91在线无精精品一区二区| 亚洲第一男人天堂| 97国产精品视频| 国产亚洲精品综合一区91| 久久精品国产亚洲精品| 日av在线播放中文不卡| 亚洲第一偷拍网| 欧美日韩中文字幕在线| 中文字幕久久亚洲| 久久视频在线直播| 91在线免费视频| 91色琪琪电影亚洲精品久久| 国产精品视频不卡| 日韩国产高清污视频在线观看| 日韩中文字幕久久| 成人午夜在线影院| 久久久国产精品免费| 91精品综合视频| 国产精品青草久久久久福利99| 日韩精品有码在线观看| 亚洲人成在线一二| 一区二区三区回区在观看免费视频| 亚洲成年人在线播放| 高跟丝袜一区二区三区| 欧美日韩成人在线视频| 日韩高清电影免费观看完整版| 日韩69视频在线观看| 91高清免费在线观看| 国产成人一区二区三区电影| 亚洲国产高清福利视频| 亚洲二区在线播放视频| 中文字幕亚洲综合久久筱田步美| 色偷偷av亚洲男人的天堂| 亚洲a∨日韩av高清在线观看| 欧美大片网站在线观看| 97国产suv精品一区二区62| 黄色成人在线播放| 成人中文字幕+乱码+中文字幕| 欧美成人在线免费| 久久久久久欧美| 日韩亚洲在线观看| 成人伊人精品色xxxx视频| 国产在线观看一区二区三区| 丁香五六月婷婷久久激情| 91精品国产综合久久香蕉922| 精品女同一区二区三区在线播放| 国产成人欧美在线观看| 欧美伦理91i| 成人av电影天堂| 成人欧美在线观看| 欧美伦理91i| 欧美黄色小视频| 青青久久aⅴ北条麻妃| 国产精品入口夜色视频大尺度| 欧美xxxx做受欧美.88| 亚洲国产第一页| 成人精品一区二区三区电影黑人| 日韩一区二区久久久| 国产精品一区二区三区毛片淫片| 亚洲天堂男人的天堂| 国产视频久久久久| 2018中文字幕一区二区三区| 91影视免费在线观看| 成人国产精品久久久久久亚洲| 国产精品一区二区3区| 国产69精品久久久久99| 亚洲福利影片在线| 久久久在线观看| 亚洲欧美日韩在线一区| 国产xxx69麻豆国语对白| 伊人伊人伊人久久| 日韩欧美极品在线观看| 欧美日韩亚洲系列| 国产97在线亚洲| 自拍偷拍亚洲在线| 国产丝袜高跟一区| 国产日韩av高清|