零、欸嘿!?
英雄哪里出来《C语言入门100例》传送门
https://bbs.csdn.net/forums/hero?category=0&typeId=17913https://bbs.csdn.net/forums/hero?category=0&typeId=17913本题知识回顾
【第18题】给定一个字符串,判定是否是C语言合法标识符 | ASCII 码的应用_英雄哪里出来-CSDN博客_c语言如何判断字符串是否合法难度:★★★☆☆,字符串处理https://blog.csdn.net/WhereIsHeroFrom/article/details/118272316每天会开启一篇试读文章,每日打卡就可以一直白嫖哦
一、题目
383. 赎金信
难度简单194
为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
给你一个赎金信 (ransomNote ) 字符串和一个杂志(magazine )字符串,判断?ransomNote ?能不能由?magazines ?里面的字符构成。
如果可以构成,返回?true ?;否则返回?false ?。
magazine ?中的每个字符只能在?ransomNote ?中使用一次。
示例 1:
输入:ransomNote = "a", magazine = "b"
输出:false
二、解题
思路;先统计杂志中的字符个数(n),如果该字符在赎金中出现就减一(n-1),不够减了,即等于零了,那就是false
bool canConstruct(char * ransomNote, char * magazine){ //给的俩数组,赎金,杂志
int has[128]; //ascii码0-127共128个
memset(has,0,sizeof(has)); //初始或为0,不然会出一些乱七八糟的数
for(int i=0;i<strlen(magazine);i++){
has[magazine[i]]++; //杂志里的字符加1,相同的字符出现就再加1
}
for(int j=0;j<strlen(ransomNote);j++){
if(has[ransomNote[j]]>0){ //>0就是赎金里的这个字符,杂志里有
has[ransomNote[j]]--; //他俩一抵消,那这个字符个个数-1
}
else return false; //<0,就不够了,就是赎金里有,杂志里不够了就返回false
}
return true; //够了 就返回true
}
三、结果
?
|