浅谈js中字符和数组一些基本算法题

最近在刷 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是一个负数则返回一个空字符串。例如:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzxwyw.html