RSS DEV コミュニティ

JavaScriptでのLeetCodeパリンドローム問題

与えられた整数がパリンドロームかどうかを判断する問題がある。1つのアプローチは、数を文字列に変換し、文字列を逆順にし、元の文字列と比較することである。このアプローチの時間複雑度はO(n)で、空間複雑度はO(n)である。これは、追加の文字列と配列の作成によるものである。より効率的なアプローチは、文字列変換なしに数学的方法を使用することである。このアプローチの時間複雑度はO(log n)である。これは、数の半分の桁しか処理しないためである。空間複雑度はO(1)である。これは、入力サイズに関係なく2つの変数しか使用しないためである。最適化されたソリューションには、負の数や1桁の数字に対する早期リターン、数の半分しか逆順にしない、定数の余分な空間しか使用しないという特徴がある。これは、偶数長や奇数長の数字を両方取り扱い、文字列変換を必要としない。例えば、1221という数字がパリンドロームであると判断される。このように、2番目のアプローチが1番目のアプローチよりも効率的であり、推奨される。
favicon
dev.to
Leet Code Palindrome problem in Javascript