DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Kaitian Xie
Kaitian Xie

Posted on • Updated on

LeetCode in Ruby: 771 Jewels and Stones

1 Line

This approach is based on Ruby’s String#count method. It takes the string j as the set of characters to count in the string s. This is the fastest and the simplest solution.

Time complexity: O(j.length+ s.length)

Extra memory: O(1)

Hash

def num_jewels_in_stones(j, s)
  stones = Hash.new 0
  s.each_char do |char|
    stones[char] += 1
  end

  sum = 0
  j.each_char do |char|
    sum += stones[char]
  end

  return sum
end

First, we iterate through the string s and create a hash called stones that uses the characters in s as keys and their occurrence as values. Then we go through each character of j and sum up their occurrences.

Time complexity: O(j.length+ s.length)

Extra memory: O(s.length)

Top comments (1)

Collapse
healeycodes profile image
Andrew Healey

Awesome solution. This is my favourite problem on LeetCode. It’s a simple introduction to hashmaps and why they’re amazing πŸ‘

🌚 Browsing with dark mode makes you a better developer by a factor of exactly 40.

It's a scientific fact.