From a8384a1d5cc2719d4b94ac246e468cf8ca9f57f4 Mon Sep 17 00:00:00 2001 From: fartem Date: Thu, 18 Apr 2024 07:29:20 +0300 Subject: [PATCH] 2024-04-18 v. 5.4.9: added "2309. Greatest English Letter in Upper and Lower Case" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- ..._english_letter_in_upper_and_lower_case.rb | 23 +++++++++++++++++++ ..._english_letter_in_upper_and_lower_case.rb | 13 +++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 lib/easy/2309_greatest_english_letter_in_upper_and_lower_case.rb create mode 100644 test/easy/test_2309_greatest_english_letter_in_upper_and_lower_case.rb diff --git a/README.md b/README.md index a89d4c65..ca87f1f8 100644 --- a/README.md +++ b/README.md @@ -409,3 +409,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 2293. Min Max Game | [Link](https://leetcode.com/problems/min-max-game/) | [Link](./lib/easy/2293_min_max_game.rb) | | 2299. Strong Password Checker II | [Link](https://leetcode.com/problems/strong-password-checker-ii/) | [Link](./lib/easy/2299_strong_password_checker_ii.rb) | | 2303. Calculate Amount Paid in Taxes | [Link](https://leetcode.com/problems/calculate-amount-paid-in-taxes/) | [Link](./lib/easy/2303_calculate_amount_paid_in_taxes.rb) | +| 2309. Greatest English Letter in Upper and Lower Case | [Link](https://leetcode.com/problems/greatest-english-letter-in-upper-and-lower-case/) | [Link](./lib/easy/2309_greatest_english_letter_in_upper_and_lower_case.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index 0a6058d9..c85d481e 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '5.4.8' + s.version = '5.4.9' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE] s.executable = 'leetcode-ruby' diff --git a/lib/easy/2309_greatest_english_letter_in_upper_and_lower_case.rb b/lib/easy/2309_greatest_english_letter_in_upper_and_lower_case.rb new file mode 100644 index 00000000..e3b345ca --- /dev/null +++ b/lib/easy/2309_greatest_english_letter_in_upper_and_lower_case.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/greatest-english-letter-in-upper-and-lower-case/ +# @param {String} s +# @return {String} +def greatest_letter(s) + upper = {} + lower = {} + + s.each_char do |c| + if c.match?(/[[:upper:]]/) + upper[c] = upper.fetch(c, 0) + 1 + else + lower[c] = lower.fetch(c, 0) + 1 + end + end + + 'ZYXWVUTSRQPONMLKJIHGFEDCBA'.each_char do |c| + return c if upper.fetch(c, 0).positive? && lower.fetch(c.downcase, 0).positive? + end + + '' +end diff --git a/test/easy/test_2309_greatest_english_letter_in_upper_and_lower_case.rb b/test/easy/test_2309_greatest_english_letter_in_upper_and_lower_case.rb new file mode 100644 index 00000000..31fc7a91 --- /dev/null +++ b/test/easy/test_2309_greatest_english_letter_in_upper_and_lower_case.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/easy/2309_greatest_english_letter_in_upper_and_lower_case' +require 'minitest/autorun' + +class GreatestEnglishLetterInUpperAndLowerCaseTest < ::Minitest::Test + def test_default + assert_equal('E', greatest_letter('lEeTcOdE')) + assert_equal('R', greatest_letter('arRAzFif')) + assert_equal('', greatest_letter('AbCdEfGhIjK')) + end +end