Skip to content

Commit 88d1577

Browse files
committed
2023-09-14 v. 2.9.3: added "1360. Number of Days Between Two Dates"
1 parent 8423a0c commit 88d1577

4 files changed

+46
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,3 +239,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
239239
| 1346. Check If N and Its Double Exist | [Link](https://leetcode.com/problems/check-if-n-and-its-double-exist/) | [Link](./lib/easy/1346_check_if_n_and_its_double_exist.rb) |
240240
| 1351. Count Negative Numbers in a Sorted Matrix | [Link](https://leetcode.com/problems/count-negative-numbers-in-a-sorted-matrix/) | [Link](./lib/easy/1351_count_negative_numbers_in_a_sorted_matrix.rb) |
241241
| 1356. Sort Integers by The Number of 1 Bits | [Link](https://leetcode.com/problems/sort-integers-by-the-number-of-1-bits/) | [Link](./lib/easy/1356_sort_integers_by_the_number_of_1_bits.rb) |
242+
| 1360. Number of Days Between Two Dates | [Link](https://leetcode.com/problems/number-of-days-between-two-dates/) | [Link](./lib/easy/1360_number_of_days_between_two_dates.rb) |

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '2.9.2'
8+
s.version = '2.9.3'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/number-of-days-between-two-dates/
4+
# @param {String} date1
5+
# @param {String} date2
6+
# @return {Integer}
7+
def days_between_dates(date1, date2)
8+
(days(date1) - days(date2)).abs
9+
end
10+
11+
# @param {String} date
12+
# @return {Integer}
13+
def days(date)
14+
y = date[0...4].to_i
15+
m = date[5...7].to_i
16+
d = date[8...10].to_i
17+
months = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
18+
result = 0
19+
(1971...y).each { |i| result += is_leap(i) ? 366 : 365 }
20+
21+
result += 1 if is_leap(y) && m > 2
22+
23+
(1...m).each { |i| result += months[i] }
24+
25+
result + d
26+
end
27+
28+
# @param {Integer} year
29+
# @return {Boolean}
30+
def is_leap(year)
31+
((year % 4).zero? && (year % 100).positive?) || (year % 400).zero?
32+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/easy/1360_number_of_days_between_two_dates'
5+
require 'minitest/autorun'
6+
7+
class NumberOfDaysBetweenTwoDatesTest < ::Minitest::Test
8+
def test_default
9+
assert_equal(1, days_between_dates('2019-06-29', '2019-06-30'))
10+
assert_equal(15, days_between_dates('2020-01-15', '2019-12-31'))
11+
end
12+
end

0 commit comments

Comments
 (0)