零、欸嘿!
英雄哪里出来《C语言入门100例》传送门
【第18题】给定一个字符串,判定是否是C语言合法标识符 | ASCII 码的应用_英雄哪里出来-CSDN博客_c语言如何判断字符串是否合法难度:★★★☆☆,字符串处理https://blog.csdn.net/WhereIsHeroFrom/article/details/118272316每天会开启一篇试读文章,每日打卡就可以一直白嫖哦
一、题目
难度简单194
为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
给你一个赎金信 (
ransomNote
) 字符串和一个杂志(magazine
)字符串,判断ransomNote
能不能由magazines
里面的字符构成。如果可以构成,返回
true
;否则返回false
。
magazine
中的每个字符只能在ransomNote
中使用一次。示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false
力扣https://leetcode-cn.com/problems/ransom-note/
二、解题
思路;先统计杂志中的字符个数(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
}
三、结果