Print Duplicate

Print only the duplicate chars in the given string.

Example

Input: Hello World
Output: lo

Algorithm

  • Loop through all chars in the string
  • Use a Set data structure to keep track of the chars seen so far
    • When visiting each char, if the char is already in the set then report as duplicate,
    • Else append it to the set

Code

require 'set'

class PrintDuplicate
  def initialize(text)
    @text = text
    @char_set = Set.new()
    @duplicates = ''
    report_duplicate
  end

  def report_duplicate
    @text.each_char do |c|
      c = c.downcase
      @char_set.include?(c) ? @duplicates += c : @char_set.add(c)
    end

    @duplicates
  end
end

puts PrintDuplicate.new("test")

Test cases

PrintDuplicate.new("lL") #=> 'l'
PrintDuplicate.new("tesT") #=> 't'
PrintDuplicate.new("tesT121") #=> 't1'

Time complexity

O(n), since we are looping over the string just once. Checking set membership is just O(1)

results matching ""

    No results matching ""