Skip to content

Commit 2a5debb

Browse files
committed
2024-07-04 v. 6.0.3: added "17. Letter Combinations of a Phone Number"
1 parent a7992c1 commit 2a5debb

4 files changed

+39
-1
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -468,3 +468,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
468468
| 12. Integer to Roman | [Link](https://leetcode.com/problems/integer-to-roman/) | [Link](./lib/medium/12_integer_to_roman.rb) |
469469
| 15. 3Sum | [Link](https://leetcode.com/problems/3sum/) | [Link](./lib/medium/15_3sum.rb) |
470470
| 16. 3Sum Closest | [Link](https://leetcode.com/problems/3sum-closest/) | [Link](./lib/medium/16_3sum_closest.rb) |
471+
| 17. Letter Combinations of a Phone Number | [Link](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) | [Link](./lib/medium/17_letter_combinations_of_a_phone_number.rb) |

leetcode-ruby.gemspec

+1-1
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 = '6.0.2'
8+
s.version = '6.0.3'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/letter-combinations-of-a-phone-number/
4+
# @param {String} digits
5+
# @return {String[]}
6+
def letter_combinations(digits)
7+
return [] if digits.empty?
8+
9+
buttons = %w[abc def ghi jkl mno prsq tuv wxyz]
10+
result = ['']
11+
digits.each_char do |c|
12+
curr = buttons[c.ord - '2'.ord]
13+
new_result = []
14+
result.each do |layout|
15+
(0...curr.length).each do |j|
16+
new_result << layout + curr[j]
17+
end
18+
end
19+
20+
result = new_result
21+
end
22+
23+
result
24+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/17_letter_combinations_of_a_phone_number'
5+
require 'minitest/autorun'
6+
7+
class LetterCombinationsOfAPhoneNumberTest < ::Minitest::Test
8+
def test_default
9+
assert_equal(%w[ad ae af bd be bf cd ce cf], letter_combinations('23'))
10+
assert_equal([], letter_combinations(''))
11+
assert_equal(%w[a b c], letter_combinations('2'))
12+
end
13+
end

0 commit comments

Comments
 (0)