エンドとアルゴリズムleetcode 125.エコーの検証
1356 ワード
[TOC]
フロントエンドとアルゴリズムleetcode 125.エコーの検証
テーマの説明
文字列を指定して、文字列かどうかを確認します.文字列と数字文字だけを考慮して、文字の大きさや文字を無視できます.
説明:この問題では、空の文字列を有効な文字列として定義します.
例1:
概要
問題の中で言及されているのはアルファベットと数字だけでなく、アルファベットの大文字と小文字を無視することです.
ヒント
二重ポインタ
解析
解法一:api侠
この問題は狂ったようにアプリを呼び出すことで解決できますが、スピードが遅いです.
解法二:双針
タイトルはアルファベットと数字を考慮して、大文字と小文字を無視して、先に元の文字列を正則に置き換えることができます.その後、すべて小文字に変換して、後尾の二つのポインタを一度に対に設定して、一致しないとfalseに戻ります.
アルゴリズム
125.回文列を検証する
もっと見る
もっと問題を見てください
フロントエンドとアルゴリズムleetcode 125.エコーの検証
テーマの説明
文字列を指定して、文字列かどうかを確認します.文字列と数字文字だけを考慮して、文字の大きさや文字を無視できます.
説明:この問題では、空の文字列を有効な文字列として定義します.
例1:
: "A man, a plan, a canal: Panama"
: true
例2: : "race a car"
: false
125.回文列を検証する概要
問題の中で言及されているのはアルファベットと数字だけでなく、アルファベットの大文字と小文字を無視することです.
ヒント
二重ポインタ
解析
解法一:api侠
この問題は狂ったようにアプリを呼び出すことで解決できますが、スピードが遅いです.
解法二:双針
タイトルはアルファベットと数字を考慮して、大文字と小文字を無視して、先に元の文字列を正則に置き換えることができます.その後、すべて小文字に変換して、後尾の二つのポインタを一度に対に設定して、一致しないとfalseに戻ります.
アルゴリズム
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
// s = s.match(/\w/g);
// if (s === null || s.length <= 1) {return true;}
// return s.join('').toLowerCase() === s.reverse().join('')
// .toLowerCase();
//
s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase();
let [i, j] = [0, s.length - 1];
while (i <= j) {
if (s.charAt(i++) !== s.charAt(j--)) {return false;}
}
return true;
};
着信テスト用例の運転結果input:"A man, a plan, a canal: Panama"
output:true
実行結果 :64 ms, javascript 99.91%
:37.3 MB, javascript 72.83%
GitHub倉庫125.回文列を検証する
もっと見る
もっと問題を見てください