LeetCode随缘刷题之赎金信

欢迎评论区讨论。😃

package leetcode.day_12_04;


/**
 * 为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
 *
 * 给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。
 *
 * 如果可以构成,返回 true ;否则返回 false 。
 *
 * magazine 中的每个字符只能在 ransomNote 中使用一次。
 *
 * 示例 1:
 *
 * 输入:ransomNote = "a", magazine = "b"
 * 输出:false
 * 示例 2:
 *
 * 输入:ransomNote = "aa", magazine = "ab"
 * 输出:false
 * 示例 3:
 *
 * 输入:ransomNote = "aa", magazine = "aab"
 * 输出:true
 *
 * @author soberw
 */
public class CanConstruct383 {
    public boolean canConstruct(String b, String a) {
        //记录次数
        int count = 0;
        //转化为StringBuilder,方便操作
        StringBuilder aa = new StringBuilder(a);
        //拆分为char数组,方便筛选
        char[] newB = b.toCharArray();
        //记下标
        int index = 0;
        for (char bb : newB) {
            //寻找下标
            index = aa.indexOf(String.valueOf(bb));
            //说明找到了,删除对应的字符,防止出现子包含情况
            if (index>=0) {
                count++;
                aa.deleteCharAt(index);
            }
        }
        //相等说明全部包含在内
        if (count == b.length()) {
            return true;
        }

        return false;
    }
    public static void main(String[] args) {
        System.out.println(new CanConstruct383().canConstruct("aa","ab"));
    }
}


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值