1. 程式人生 > >js基礎演算法之檢測字串是否為迴文Check for Palindromes

js基礎演算法之檢測字串是否為迴文Check for Palindromes

freeCodeCamp上做了一個關於檢測迴文的演算法測驗;

1測試提示

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

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

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

函式引數的值可以為”racecar”,”RaceCar”和”race CAR”。

當你完成不了挑戰的時候,記得開大招’Read-Search-Ask’。

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

String.replace()

String.toLowerCase()

2測試要求

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實現思路

1.先用字串的replace()方法把字串裡的非常規字元去掉 包括空格,下劃線,-,(,),/,\

str = str.replace(/\W\s_/gi,'');

2.要得到反轉的字串,先將str用split()方法轉換成陣列,再用陣列的reverse()方法,最後再使用陣列的join()方法變成字串

反轉後的全小寫字串str.split('').reverse().join('').toLowerCase();

3.用反轉前的全小寫字串與反轉後的全小寫字串比較返回true 或者false;

4程式碼實現

function palindrome(str
){ str = str.replace(/\W\s_/gi,''); return str.toLowerCase == str.split('').reverse().join('').toLowerCase(); }

相關推薦

js基礎演算法檢測字串是否Check for Palindromes

在freeCodeCamp上做了一個關於檢測迴文的演算法測驗; 1測試提示 如果給定的字串是迴文,返回true,反之,返回false。 如果一個字串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣,那麼這個字串就是palindrome(迴文)。 注

基礎演算法排序雜湊遞

基礎演算法學習筆記(一) 一. 選擇排序 1.選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直

演算法設計-利用棧和佇列判別讀入的字串是否

讀入的一個字串以‘@’為結束符,是迴文返回TRUE,否則返回FALSEbool PalindromeTest(){        InitStack(S);InitQueue(Q);        while((c=getchar())!='@'){            P

leetcode-中級演算法-陣列和字串-最長字串

給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: "aba"也是一個有效答案。 示例 2: 輸入: “cbbd” 輸出: “bb” 思路 這道題很顯然可以用暴力求解,但時

程式設計判斷字串是否 判斷一個字串是否是,例如單詞‘level’

#include <stdio.h> #include <string.h> int main() {char a[100]= {0};int i = 0;int len = 0;printf("please input character stri

判斷字串是否 python實現

題目:判斷一個字串是否是迴文 方法:設定兩個指標,分別有頭尾向中間移動 或者由中間向兩邊移動 #!/usr/bin/env python # -*- coding: utf-8 -*- def isPalindrome(s): '''判斷一個字串是否為迴文''' l

程式設計判斷字串是否

      判斷一個字串是否為迴文,比如說單詞“level”就是迴文。我們可以從一個字串的兩端進行遍歷比較,例如對於level我們可以進行下面的步驟。 (1)計算需要比較的次數。由於“level”字串

C語言利用棧判斷字串是否

#include<stdio.h> #include<string.h> #define OK 1 #define ERROR 0 typedef char ElemType;

【C語言】判斷一個字串是否字串

判斷一個字串是否為迴文字串。 #include <stdio.h> int main(void) { char a[100]; int i = 0, j = 0; printf("Plea

利用指標測試字串是否

void palindromejudge(char buffer[SiZE]){    char *rear;//前端  char *front;//後端  rear = buffer;//將字串陣列第0個元素的地址的值賦值給rear  front = buffer + st

基礎演算法字串轉整數(Leetcode-8)

春招第一步,演算法伴我行 計劃著每天研究幾道演算法題,各個型別儘可能都包含,自己寫出來,好做增強。基本都使用python語言編寫,主要講一下自己的思路,以及AC情況。水平不夠,大家多指正,不吝賜教,十分感謝。 想起之前頭條面試的一道演算法題(另一道下次說),字串轉整數,之前有做過,但是面

Vue.js 基礎學習混合mixins

sda itl 實現 var title cte 混合 method ons 混合以一種靈活的方式為組件提供分布復用功能。混合對象可以包含任意的組件選項。當組件使用了混合對象時,混合對象的所有選項將被“混入”組件自己的選項中。 當混合對象與組件包含同名選項時,這些選項將以適

演算法“統計字串中單詞的個數”

如,給定String,求此字串的單詞數量。字串不包括標點,大寫字母。例如String str="hello world hello hi";,單詞數量為3,分別是:hello world hello hi 。 public static void main(String[] args){

C++ Leetcode初級演算法反轉字串

編寫一個函式,其作用是將輸入的字串反轉過來。 示例 1: 輸入: “hello” 輸出: “olleh” 示例 2: 輸入: “A man, a plan, a canal: Panama” 輸出: “amanaP :lanac a ,nalp a ,nam A” class

基礎演算法vector、回溯

基礎演算法之vector、回溯 一.vector vector介紹 vector的常用方法 1.初始化 2.模擬棧 3.模擬佇列 4.遍歷 5.插入指定元素 6.刪除指定元素

基礎演算法貪心法、二分法及其他演算法思想和技巧

基礎演算法學習筆記(三) 1. 貪心法 1.1 簡單貪心 1.2 區間貪心 2. 二分法 2.1 二分查詢 2.2 快速冪 3. two pointers 3.1 什麼是two

Vue.js基礎學習npm 安裝

最近在學習.net core  的同時也在學習前端vue.js 。 從沒有接觸過一個真正的前端框架,這次打算從開始認真的學習一下。寫部落格的目的就是做下筆記。 安裝npm 下載後,雙擊安裝 。 一路next,至到安裝成功 。 開啟CMD,檢查是否正常

Vue.js基礎學習 搭建vue.js 專案框架。

還是那就俗話,寫部落格的原因就是為記筆記。其實本人也在word 文件上,也記了,但是怕丟。所以寫成部落格,當自己再需要的時候可以檢視。本人主要是c#,asp.net。為了能一人獨立開發一個完整的專案,所以學習一套前端的架構。有錯誤的地方,歡迎大家指出。不說廢話,趕緊利索的寫實

貪心演算法01字串問題

“01”子序列問題 問題描述 給定 n 個二進位制字串,要求調整字串順序並連線所有的字元 串,使最後得到的字串中有儘可能多的“01”子序列。輸出“01”子序 列的最大個數。 (1 ≤ n ≤ 100000)。  解題思路與演算法思想 如果用貪心的思路來解這道

redis基礎命令String字串型別

連線redis見上一篇文章連線redis redis作為快取可以在記憶體中儲存五種資料型別,但是最底層還是String    五種資料型別:       String字串型別       hash面向物件的儲存方式       list連結串列       se