【算法与数据结构】383、LeetCode赎金信

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

【算法与数据结构】383、LeetCode赎金信_第1张图片

二、解法

  思路分析:这道题的思路和242、有效的字母异位词的思路一样
  程序如下

class Solution {
public:
	bool canConstruct(string ransomNote, string magazine) {
		if (ransomNote.size() > magazine.size()) return false;
		int ABCTable[26] = { 0 };
		for (int i = 0; i < ransomNote.size(); i++) {
			ABCTable[ransomNote[i] - 'a']++;
		}
		for (int i = 0; i < magazine.size(); i++) {
			ABCTable[magazine[i] - 'a']--;
		}
		for (int i = 0; i < 26; i++) {
			if (ABCTable[i] > 0) return false;
		}
		return true;
	}
};

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

三、完整代码

# include 
# include 
using namespace std;

class Solution {
public:
	bool canConstruct(string ransomNote, string magazine) {
		if (ransomNote.size() > magazine.size()) return false;
		int ABCTable[26] = { 0 };
		for (int i = 0; i < ransomNote.size(); i++) {
			ABCTable[ransomNote[i] - 'a']++;
		}
		for (int i = 0; i < magazine.size(); i++) {
			ABCTable[magazine[i] - 'a']--;
		}
		for (int i = 0; i < 26; i++) {
			if (ABCTable[i] > 0) return false;
		}
		return true;
	}
};

int main()
{
	string ransomNote = "aa";
	string magazine = "ab";
	Solution s1;
	bool result = s1.canConstruct(ransomNote, magazine);
	cout << result << endl;
	system("pause");
	return 0;
}

end

你可能感兴趣的:(算法,算法)