又一道自己做出来的题,小白太不容易的
解法1:其实这个解法,字母异位的那道题思路几乎一样,首先按照题的要求,可以先写一个条件,那就是如果r字符串(这里简写)的长度大于m字符串(这里简写)的长度,那r肯定不能由m里面的字符构成,所以返回false,
然后创建一个26位的数组,初始化里面元素都是0,然后开始利用字母asc||码的规则,开始遍历m字符串,语句1 的功能就相当于 在数组record里面储存了 m字符串中对应每个字符出现的次数,假如m字符串里有字符c,那么asc||码‘c’-‘a’= 2;然后record[2]++;就相当于在下标位2 的位置+1;然后遍历r字符串,执行语句2,相当于把r字符串里面出现的字符在record里减去,如果最后record里面的元素都是大于等于0,说明m字符串里面包含了r字符串的所有元素,返回true,如果record里面有出现小于0的情况,说明r字符串里面有字符在m里面找不到,返回false,
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if(rans