From 48af0c6f18f0a7dcc6d26fbdcd471f4f3a7f6b23 Mon Sep 17 00:00:00 2001 From: ongch Date: Tue, 4 Oct 2022 12:38:10 +0800 Subject: [PATCH 1/2] add: reverse integer --- .../Algorithms/Reverse_Integer.js | 46 +++++++++++++++++++ README.md | 1 + 2 files changed, 47 insertions(+) create mode 100644 LeetcodeProblems/Algorithms/Reverse_Integer.js diff --git a/LeetcodeProblems/Algorithms/Reverse_Integer.js b/LeetcodeProblems/Algorithms/Reverse_Integer.js new file mode 100644 index 0000000..058506e --- /dev/null +++ b/LeetcodeProblems/Algorithms/Reverse_Integer.js @@ -0,0 +1,46 @@ +/** +Reverse Integer +https://leetcode.com/problems/reverse-integer/ + +Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0. + +Assume the environment does not allow you to store 64-bit integers (signed or unsigned). + +Example 1: +Input: x = 123 +Output: 321 + +Example 2: +Input: x = -123 +Output: -321 + +Example 3: +Input: x = 120 +Output: 21 + + */ + +/** + * @param {number} x + * @return {number} + */ +var reverseInteger = function(x) { + const sign = x >= 0 ? 1 : -1; + + let baseNum = sign * x; + let builder = 0; + + while (baseNum > 0) { + const digit = baseNum % 10; + builder = builder * 10 + digit; + baseNum = (baseNum / 10) | 0; + } + + builder *= sign; + + const isWithinRange = (builder >= -Math.pow(2, 31) && builder <= Math.pow(2, 31) - 1); + + return isWithinRange ? builder : 0; +}; + +module.exports.reverseInteger = reverseInteger; \ No newline at end of file diff --git a/README.md b/README.md index 6085d84..ca93bed 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ To run a specific problem in your console run `node ` (e.g. | [Construct Binary Tree from Preorder and Inorder Traversal ](/LeetcodeProblems/Algorithms/Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.js) | Medium | https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ | | [Lowest Common Ancestor of a Binary Tree ](/LeetcodeProblems/Algorithms/Lowest_Common_Ancestor_of_a_Binary_Tree.js) | Medium | https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ | | [Maximum Sum of an Hourglass](/LeetcodeProblems/Algorithms/Maximise_Hour_Glass_Sum.js) | Medium | https://leetcode.com/problems/maximum-sum-of-an-hourglass/ | +| [Reverse Integer](/LeetcodeProblems/Algorithms/Reverse_Integer.js) | Medium | https://leetcode.com/problems/reverse-integer/ | | [Flood Fill ](/LeetcodeProblems/Algorithms/Flood_Fill.js) | Easy | https://leetcode.com/problems/flood-fill/ | | [Implement stack using queues ](/LeetcodeProblems/Algorithms/Implement_stack_using_queues.js) | Easy | https://leetcode.com/problems/implement-stack-using-queues/ | | [Number of Segments in a String ](/LeetcodeProblems/Algorithms/Number_of_Segments_in_a_String.js) | Easy | https://leetcode.com/problems/number-of-segments-in-a-string/ | From c2ed602a126d4e812ca64a592a19e3e8a36ec609 Mon Sep 17 00:00:00 2001 From: ongch Date: Thu, 6 Oct 2022 11:29:42 +0800 Subject: [PATCH 2/2] fix: readme formatting and add test --- .../Algorithms/Reverse_Integer_Test.js | 11 +++++++++++ README.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 LeetcodeProblemsTests/Algorithms/Reverse_Integer_Test.js diff --git a/LeetcodeProblemsTests/Algorithms/Reverse_Integer_Test.js b/LeetcodeProblemsTests/Algorithms/Reverse_Integer_Test.js new file mode 100644 index 0000000..a599cf3 --- /dev/null +++ b/LeetcodeProblemsTests/Algorithms/Reverse_Integer_Test.js @@ -0,0 +1,11 @@ +const assert = require('assert'); +const reverseInteger = require('../../LeetcodeProblems/Algorithms/Reverse_Integer').reverseInteger; + +var test = function() { + assert.equal(reverseInteger(123), 321); + assert.equal(reverseInteger(-123), -321); + assert.equal(reverseInteger(120), 21); +} + + +module.exports.test = test; diff --git a/README.md b/README.md index ca93bed..994dd8c 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ To run a specific problem in your console run `node ` (e.g. | [Construct Binary Tree from Preorder and Inorder Traversal ](/LeetcodeProblems/Algorithms/Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.js) | Medium | https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ | | [Lowest Common Ancestor of a Binary Tree ](/LeetcodeProblems/Algorithms/Lowest_Common_Ancestor_of_a_Binary_Tree.js) | Medium | https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ | | [Maximum Sum of an Hourglass](/LeetcodeProblems/Algorithms/Maximise_Hour_Glass_Sum.js) | Medium | https://leetcode.com/problems/maximum-sum-of-an-hourglass/ | -| [Reverse Integer](/LeetcodeProblems/Algorithms/Reverse_Integer.js) | Medium | https://leetcode.com/problems/reverse-integer/ | +| [Reverse Integer](/LeetcodeProblems/Algorithms/Reverse_Integer.js) | Medium | https://leetcode.com/problems/reverse-integer/ | | [Flood Fill ](/LeetcodeProblems/Algorithms/Flood_Fill.js) | Easy | https://leetcode.com/problems/flood-fill/ | | [Implement stack using queues ](/LeetcodeProblems/Algorithms/Implement_stack_using_queues.js) | Easy | https://leetcode.com/problems/implement-stack-using-queues/ | | [Number of Segments in a String ](/LeetcodeProblems/Algorithms/Number_of_Segments_in_a_String.js) | Easy | https://leetcode.com/problems/number-of-segments-in-a-string/ |