383. Ransom Note

来源:互联网 发布:手机直播美颜软件 编辑:程序博客网 时间:2024/05/21 22:28

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") -> falsecanConstruct("aa", "ab") -> falsecanConstruct("aa", "aab") -> true
#include <iostream>#include <string>#include <algorithm>using namespace std;class Solution {public:    bool canConstruct(string ransomNote, string magazine) {        if(ransomNote.length() > magazine.length())        return false;        else        {        for(int i=0;i<ransomNote.length();i++)        {        bool flag = false;        for(int j=0;j<magazine.length();j++)        {        if(ransomNote[i] == magazine[j])        {        magazine[j] = '0';        flag = true;        break;}}if(flag == false)return false;}return true;}    }};
以下是来自评论区sharmilas的代码 使用了hashmap 截取下来以作参考

class Solution {public:    bool canConstruct(string ransomNote, string magazine) {
 int i=0,j=0;    map <char ,int> h;    while(i<m.length())    {    h[m[i]]++;        i++;    }    i=0;        while(i<r.length())    {        if(h.find(r[i])!=h.end())        {            h[r[i]]=h[r[i]]-1;            if(h[r[i]]==0)            h.erase(h.find(r[i]));        }        else            return false;            i++;    }    return true;    }};



0 0
原创粉丝点击