Skip to content

Commit 1df7c1e

Browse files
authored
Merge pull request #724 from fartem/151_Reverse_Words_in_a_String
2024-08-29 v. 6.5.8: added "151. Reverse Words in a String"
2 parents c994dd3 + 87c6702 commit 1df7c1e

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,3 +523,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
523523
| 147. Insertion Sort List | [Link](https://leetcode.com/problems/insertion-sort-list/) | [Link](./lib/medium/147_insertion_sort_list.rb) | [Link](./test/medium/test_147_insertion_sort_list.rb) |
524524
| 148. Sort List | [Link](https://leetcode.com/problems/sort-list/) | [Link](./lib/medium/148_sort_list.rb) | [Link](./test/medium/test_148_sort_list.rb) |
525525
| 150. Evaluate Reverse Polish Notation | [Link](https://leetcode.com/problems/evaluate-reverse-polish-notation/) | [Link](./lib/medium/150_evaluate_reverse_polish_notation.rb) | [Link](./test/medium/test_150_evaluate_reverse_polish_notation.rb) |
526+
| 151. Reverse Words in a String | [Link](https://leetcode.com/problems/reverse-words-in-a-string/) | [Link](./lib/medium/151_reverse_words_in_a_string.rb) | [Link](./test/medium/test_151_reverse_words_in_a_string.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 = '6.5.7'
8+
s.version = '6.5.8'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/reverse-words-in-a-string/
4+
# @param {String} s
5+
# @return {String}
6+
def reverse_words151(s)
7+
result = []
8+
word = []
9+
s.each_char do |c|
10+
if c =~ /[a-zA-Z0-9]/
11+
word << c
12+
else
13+
result << word.join unless word.empty?
14+
15+
word.clear
16+
end
17+
end
18+
19+
result << word.join unless word.empty?
20+
21+
result.reverse.join(' ')
22+
end
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/151_reverse_words_in_a_string'
5+
require 'minitest/autorun'
6+
7+
class ReverseWordsInAStringTest < ::Minitest::Test
8+
def test_default_one
9+
assert_equal(
10+
'blue is sky the',
11+
reverse_words151(
12+
'the sky is blue'
13+
)
14+
)
15+
end
16+
17+
def test_default_two
18+
assert_equal(
19+
'world hello',
20+
reverse_words151(
21+
' hello world '
22+
)
23+
)
24+
end
25+
26+
def test_default_three
27+
assert_equal(
28+
'example good a',
29+
reverse_words151(
30+
'a good example'
31+
)
32+
)
33+
end
34+
end

0 commit comments

Comments
 (0)