ホームページ > 記事 > ウェブフロントエンド > JavaScript はどのように回文文字列を決定するか (分析例)
この記事の内容はJavaScriptで回文文字列を判定する方法(サンプル解析)ですので、困っている方は参考にしていただければ幸いです。
Paindromes(ペインドローム)は、中国語で前後を読むのが同じであり、対称であることを意味し、英語では「上海の水道水は海から来ている」など、前を向いて後ろを向いて読むことを意味する言葉。 「マダム」など、すべて同じです。また、回文とも呼ばれる数字は、「16461」のような対称的な数字、つまり元の数字と同じ数字を並べ替えた数字を指します。
指定された文字列を判定し、その文字列が回文である場合は、true
,反之返回false
を返します。
function Palindromes(str) { let reg = /[\W_]/g; // \w 匹配所有字母和数字以及下划线; \W与之相反; [\W_] 表示匹配下划线或者所有非字母非数字中的任意一个;/g全局匹配 let newStr = str.replace(reg, '').toLowerCase(); let reverseStr = newStr.split('').reverse().join('') return reverseStr === newStr; // 与 newStr 对比 }
実は、ここでは文字を配列に変換し、配列を反転してから文字列を変換するなど、配列操作のステップが多く、パフォーマンスはあまり良くありません。配列は参照型であると考えられます。配列を変更するには、新しいヒープ アドレス空間を開く必要があります。
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); for(let i = 0, len = Math.floor(newStr.length / 2); i < len; i++) { if(newStr[i] !== newStr[newStr.length - 1 - i]) return false; } return true; }
書き方 2
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; for(let i = 0, j = len - 1; i < j; i++, j--) { // i < j console.log('---'); if(newStr[i] !== newStr[j]) return false; } return true; }
function palin(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; while(len >= 1) { console.log('--') if(newStr[0] != newStr[len - 1]) { // len = 0; // 为了终止 while 循环 否则会陷入死循环 return false; } else { return palin(newStr.slice(1, len - 1)); // 截掉收尾字符 再次比较收尾字符是否相等 // 直到字符串剩下一个字符(奇数项)或者 0 个字符(偶数项) } } return true; }
指定された文字列について、それがであるかどうかを判断するために最大 1 文字を削除できます。まだ回文ではありません。
変数フラグを設定すると、両側の文字のペアが初めて異なることが判明した場合、その後の比較で相違が見つかった場合は、結果がすぐに返されます。
function palin(str) { let flag = false; // 第一次不同可允许 let len = str.length; for(let [i, j] = [0, len - 1]; i < j; i++, j--) { if(str[i] !== str[j]) { if(flag) { return false; } // 第一次发现不同时,让右边-1 或左边+1判断相不相等 // 这时候若相等可继续 否则直接返回结果 false if(str[i++] == str[j]) { i++; flag = true; } else if (str[i] == str[j--]) { j--; flag = true; } else { return false; } } } return true; } palin('abaacaaa'); palin('aabsdjdbaa'); palin('ab')
関連する推奨事項:
文字列を検索し、検索結果を string に返す JavaScript メソッド_javascript スキル
以上がJavaScript はどのように回文文字列を決定するか (分析例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。