【随想】每日两题Day.11

题目:383.赎金信

给你两个字符串: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 由小写英文字母组成

代码:

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length()) return false;
        int[] arr = new int[26];
        for(char c : magazine.toCharArray()) {
            arr[c - 'a'] += 1;
        }
        for(char c : ransomNote.toCharArray()) {
            arr[c - 'a'] -= 1;
        }
        for(int i : arr) {
            if(i < 0) return false;
        }
        return true;
    }
}

思考:

这个题并不难,要掌握的是字符串的 toCharArray() 方法,还有很简便的写法。

题目:求差集(学校的作业)

【问题描述】两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入接收集合中的自然数元素,以空格分隔。-1表示输入结束。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。
如果A、B的差集为空集,则不输出任何数值。
【样例输入】
2 8 3 4 -1
6 1 4 9 -1
【样例输出】
2 8 3
【样例说明】从标准输入接收集合中的自然数元素,输出集合A、B的差集。
【评分标准】该题要求输出差运算后集合中的元素,结果完全正确得20分,每个测试点4分。

代码:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        ArrayList<Integer> listA = new ArrayList<>();
        ArrayList<Integer> listB = new ArrayList<>();

        // 输入集合A的元素
        int num;
        while ((num = scanner.nextInt()) != -1) {
            listA.add(num);
        }

        // 清除换行符
        scanner.nextLine();

        // 输入集合B的元素
        while ((num = scanner.nextInt()) != -1) {
            listB.add(num);
        }

        // 计算差集
        ArrayList<Integer> difference = new ArrayList<>();
        for (Integer element : listA) {
            if (!listB.contains(element)) {
                difference.add(element);
            }
        }

        // 输出差集
        for (Integer element : difference) {
            System.out.print(element + " ");
        }

        scanner.close();
    }
}

思考:

这道题的输入很关键,要用List来接收不知长度的输入,然后怎么处理的输入很关键。要重点复习学习!

题目: 字符串分割(学校的作业)

【问题描述】

输入两个字符串str和tok。其中tok由若干字符构成,每个字符均可作为一个分隔字符对str进行分隔。
注意:str和tok中均可以包含空格。如果tok含有空格,则空格也作为str的分隔字符。
【输入形式】

控制台分两行输入两个字符串str和tok。

【输出形式】

分行输出str被分隔后的各字符串。

【样例输入】

jfi,dpf.,jfpe&df-jfpf/□□jfoef$djfo□,pe
,. □/&$-

(上例中"□"代表一个空格)

【样例输出】

jfi
dpf
jfpe
df
jfpf
jfoef
djfo
pe

【样例说明】

输入字符串str = "jfi,dpf.,jfpe&df-jfpf/□□jfoef$djfo□,pe",tok = ",. □/&$-",tok中的每一个字符(包括空格)均可作为str的分隔符,输出如上例所示。

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要分隔的字符串str:");
        String str = scanner.nextLine();

        System.out.println("请输入分隔符字符串tok:");
        String tok = scanner.nextLine();

        // 使用正则表达式构建分隔符
        String regex = "[" + tok + "]+";
        String[] tokens = str.split(regex);

        // 输出分隔后的各字符串
        for (String token : tokens) {
            System.out.println(token);
        }

        scanner.close();
    }
}

思考:

正则表达式一定要弄明白是怎么回事!!这个题现在还有点不懂!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sessy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值