题目:
给你两个字符串:ransomNote
和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab" 输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true
提示:
1 <= ransomNote.length, magazine.length <= 105
ransomNote
和magazine
由小写英文字母组成
解答:
遍历ransomNote 字符串的每个字符,拿ransomNote的字符和magazine的每个字符做对比,如果相同,则将magazine重的该字符改为0,接着比对ransomNote的下一个字符,如果遍历完magazine字符串都没有找到相同的,则返回false,如果ransomNote被遍历完则返回true。
bool canConstruct(char* ransomNote, char* magazine) {int l1=strlen(ransomNote);int l2=strlen(magazine);int j=0,i=0;for(i=0;i<l1;){for(j=0;j<l2;j++){if(ransomNote[i]==magazine[j]){magazine[j]=0;i++;break;}}if(j>=l2){return false;}}return true;
}
运行结果: