# Blogs Hub

### by Sumit Chourasia | Jun 04, 2020 | Category :coding | Tags : आसानडेटा-संरचनाc-sharpleetcodestringalgorithm

#### Ransom Note - मिनी टीवी

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines; otherwise, it will return false.

Each letter in the magazine string can only be used once in your ransom note.

Example 1:

Input: ransomNote = "a", magazine = "b"

Output: false

Example 2:

Input: ransomNote = "aa", magazine = "ab"

Output: false

Example 3:

Input: ransomNote = "aa", magazine = "aab"

Output: true

Constraints:

You may assume that both strings contain only lowercase letters.

Solution:

``````using System;
using System.Collections.Generic;
using System.Text;

{
public class CanConstructSoln
{
public bool CanConstruct(string ransomNote, string magazine)
{
var map = new Dictionary<char, int>();
for (int i = 0; i < magazine.Length; i++)
{
if (map.ContainsKey(magazine[i]))
{
map[magazine[i]]++;
}
else
{
}
}

for (int i = 0; i < ransomNote.Length; i++)
{
if (!map.ContainsKey(ransomNote[i]))
{
return false;
}
else
{
map[ransomNote[i]]--;
if (map[ransomNote[i]] == 0)
{
map.Remove(ransomNote[i]);
}
}
}

return true;
}
}
}
``````

Time Complexity: O(n)

Space Complexity: O(n)

Unit Tests:

``````using LeetCode.AskGif.Easy.String;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Text;

namespace CodingUnitTest.Easy.String
{
[TestClass]
public class CanConstructSolnTests
{
[TestMethod]
public void CanConstructSoln_First()
{
var ransomNote = "a";
var magazine = "b";
var output = false;
var res = new CanConstructSoln().CanConstruct(ransomNote, magazine);

Assert.AreEqual(res, output);
}

[TestMethod]
public void CanConstructSoln_Second()
{
var ransomNote = "aa";
var magazine = "ab";
var output = false;
var res = new CanConstructSoln().CanConstruct(ransomNote, magazine);

Assert.AreEqual(res, output);
}

[TestMethod]
public void CanConstructSoln_Third()
{
var ransomNote = "aa";
var magazine = "aab";
var output = true;
var res = new CanConstructSoln().CanConstruct(ransomNote, magazine);

Assert.AreEqual(res, output);
}
}
}
``````

Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia