From 244e115909938f19742ede7029b4a193f7f78964 Mon Sep 17 00:00:00 2001 From: fartem Date: Tue, 17 Dec 2024 10:31:05 +0300 Subject: [PATCH] 2024-12-17 v. 7.3.6: added "647. Palindromic Substrings" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- lib/medium/647_palindromic_substrings.rb | 31 +++++++++++++++++++ .../medium/test_647_palindromic_substrings.rb | 11 +++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 lib/medium/647_palindromic_substrings.rb create mode 100644 test/medium/test_647_palindromic_substrings.rb diff --git a/README.md b/README.md index cd09e8a0..e1c6419a 100644 --- a/README.md +++ b/README.md @@ -600,3 +600,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 622. Design Circular Queue | [Link](https://leetcode.com/problems/design-circular-queue/) | [Link](./lib/medium/622_design_circular_queue.rb) | [Link](./test/medium/test_622_design_circular_queue.rb) | | 623. Add One Row to Tree | [Link](https://leetcode.com/problems/add-one-row-to-tree/) | [Link](./lib/medium/623_add_one_row_to_tree.rb) | [Link](./test/medium/test_623_add_one_row_to_tree.rb) | | 641. Design Circular Deque | [Link](https://leetcode.com/problems/design-circular-deque/) | [Link](./lib/medium/641_design_circular_deque.rb) | [Link](./test/medium/test_641_design_circular_deque.rb) | +| 647. Palindromic Substrings | [Link](https://leetcode.com/problems/palindromic-substrings/) | [Link](./lib/medium/647_palindromic_substrings.rb) | [Link](./test/medium/test_647_palindromic_substrings.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index ea9344e0..1b64c0a3 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 = '7.3.5' + s.version = '7.3.6' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/647_palindromic_substrings.rb b/lib/medium/647_palindromic_substrings.rb new file mode 100644 index 00000000..9f50d65a --- /dev/null +++ b/lib/medium/647_palindromic_substrings.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/palindromic-substrings/ +# @param {String} s +# @return {Integer} +def count_substrings(s) + count = 0 + s.size.times do |i| + count += palindrome_count_for_string(s, i, i) + count += palindrome_count_for_string(s, i, i + 1) + end + + count +end + +private + +# @param {String} s +# @param {Integer} left +# @param {Integer} right +# @return {Integer} +def palindrome_count_for_string(s, left, right) + count = 0 + while left >= 0 && right < s.length && s[left] == s[right] + count += 1 + left -= 1 + right += 1 + end + + count +end diff --git a/test/medium/test_647_palindromic_substrings.rb b/test/medium/test_647_palindromic_substrings.rb new file mode 100644 index 00000000..49d87550 --- /dev/null +++ b/test/medium/test_647_palindromic_substrings.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/medium/647_palindromic_substrings' +require 'minitest/autorun' + +class PalindromicSubstringsTest < ::Minitest::Test + def test_default_one = assert_equal(3, count_substrings('abc')) + + def test_default_two = assert_equal(6, count_substrings('aaa')) +end