zoukankan      html  css  js  c++  java
  • LeetCode 383. Ransom Note

    原题链接在这里: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

    题解:

    第二个string的char们能否组成第一个string. 用freq来maintain magazine的么个char的个数,再把ransomNote的对应char个数减掉,若出现负数就不能通过magazine create ransomNote.

    Time Complexity: O(magazine.length() + ransomNote.length()). Space: O(1)

    AC Java:

     1 public class Solution {
     2     public boolean canConstruct(String ransomNote, String magazine) {
     3         if(ransomNote == null || magazine == null){
     4             throw new IllegalArgumentException("Invalid input string.");
     5         }
     6         
     7         int [] freq = new int[256];
     8         for(int i = 0; i<magazine.length(); i++){
     9             freq[magazine.charAt(i)]++;
    10         }
    11         
    12         for(int i = 0; i<ransomNote.length(); i++){
    13             if(--freq[ransomNote.charAt(i)] < 0){
    14                 return false;
    15             }
    16         }
    17         
    18         return true;
    19     }
    20 }

    跟上Stickers to Spell Word.

  • 相关阅读:
    OutputCache详解
    C#数值类型的转换
    C#变量类型转换
    C#和.net
    数组
    mvc
    C#部分基础知识
    项目开发-->高级功能汇总
    项目开发-->基础功能汇总
    C#基础篇
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6261398.html
Copyright © 2011-2022 走看看