iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
1
Software Development

透過 LeetCode 解救美少女工程師的演算法人生系列 第 12

[Day 12] 演算法刷題 LeetCode 383. Ransom Note (Easy)

  • 分享至 

  • xImage
  •  

題目


https://leetcode.com/problems/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.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true

解答


C#

public class Solution {
    public bool CanConstruct(string ransomNote, string magazine) {

        if(magazine.Length < ransomNote.Length)
        {
            return false;
        }
        
        var ransomNotes = ransomNote.ToCharArray().ToList();
        var magazines = magazine.ToCharArray().ToList();
		
        foreach(var s in ransomNotes)
        {
            int index = magazines.IndexOf(s);

            if(index >= 0)
            {
                magazines.RemoveAt(index);
            }
            else
            {
                return false;
            }
        }
        return true;
    }
}

結果


Runtime: 80 ms, faster than 96.46% of C# online submissions.

Memory Usage: 28.1 MB, less than 100% of C# online submissions.

Time Complexity: O(n)

Space Complextiy: O(n)


為什麼我要這樣做?


這題相對簡單喔!而且我覺得是時候該偷懶一下了

題目主要是說,有個犯人想要從雜誌 (magazine) 上剪貼他想要的字到勒索信 (ransomNote) 上

  1. 若 magazine 上的字元不夠在 ransomNote 上使用,return false
  2. 將 magazine 及 ransomNote 轉換成 List<char>,這樣就可以使用 IndexOf(s)RemoveAt(index)
  3. 判斷 magazine 裡有沒有 ransomNote 要的字元
    • 的話,就剪貼上去 (magazines.RemoveAt(index))
    • 沒有 的話就 return false,因為不夠用啦~

以上就是這次 LeetCode 刷題的分享啦!
如果其它人有更棒的想法及意見,請留言或寄信(t4730@yahoo.com.tw) 給我。
那我們就下回見囉 /images/emoticon/emoticon07.gif


上一篇
[Day 11] 演算法刷題 LeetCode 4. Median of Two Sorted Arrays (Hard)
下一篇
[Day 13] 演算法刷題 LeetCode 387. First Unique Character in a String (Easy)
系列文
透過 LeetCode 解救美少女工程師的演算法人生31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言