Leetcode- 383. Ransom Note(string)

题目链接:点击打开链接

题目大意:假设有一个任意的赎金的字符串和另一个包含所有杂志的信件的字符串,写一个函数,如果可以从杂志上构造出赎金的话,这个函数就会返回true;否则,它将返回false。

      其实就是问在magazine里面能不能构造出ransomNote字符串,且magazine中的字符都只能用一次,可以的话就返回true,否则返回false,前面一直没看懂题目、、、、以为是查找子串

解题思路:因为只有26个字母,直接开两个数组去比较个数就好啦,看代码吧。

解题代码:

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int a[26]={0},b[26]={0};
        int len1=ransomNote.length();
        int len2=magazine.length();
        if(len1>len2) return false;
        if(ransomNote == "" && magazine == "") return true;
        for(int i=0;i<len1;i++)
        {
            a[ransomNote[i]-'a']++;
        }
        for(int j=0;j<len2;j++)
        {
            b[magazine[j]-'a']++;
        }
        for(int i=0;i<26;i++)
        {
            if(a[i]>b[i]) return false;
        }
        return true;
    }
};





~step by step

发布了37 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zsheng_/article/details/78153990
今日推荐