Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
给你两个字符串: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 由小写英文字母组成
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/ra… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路分析:
判断 ransomNote 能不能由 magazine 里面的字符构成。 并且说明了每个字符仅可以使用一次,其实就是判断magazine是否包含ransomNote的全部字符,并且每个字符数量要大余ransomNote。
具体过程:
创建一个长度26的int数组代表26个字母 循环遍历两个需要传入的字符串 字符串1中,遍历到的字母在int数组中对应的值-1 字符串2中,遍历到的字母在int数组中对应的值+1 若是int数组每一位的值都不小于0,则 字符串1 可被字符串2 组成,返回true
三、AC代码
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
//判断 ransnmNote 能不能由 magazine 中字符构成
int[] ints = new int[26];
for (int i = 0;i<ransomNote.length();i++){
ints[ransomNote.charAt(i)-97]--;
}
for (int i=0;i<magazine.length();i++){
ints[magazine.charAt(i)-97]++;
}
for (int data:ints){
if (data<0){
return false;
}
}
return true;
}
}
四、总结:
掘友们,解题不易,如果觉得有用就留下个赞或评论再走吧!谢啦~ 💐