【随想】每日两题Day.11

简介: 随想】每日两题Day.11

题目:383.赎金信


给你两个字符串:ransomNotemagazine ,判断 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();
    }
}

思考:

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

目录
相关文章
|
6月前
|
算法
【随想】每日两题Day.9
【随想】每日两题
36 1
|
6月前
【随想】每日两题Day.4
【随想】每日两题Day.4
28 0
|
6月前
|
算法
【随想】每日两题Day.15
【随想】每日两题Day.15
34 0
|
6月前
|
数据安全/隐私保护
【随想】每日两题Day.14
【随想】每日两题Day.14
33 0
|
6月前
【随想】每日两题Day.17
【随想】每日两题Day.17
39 0
|
6月前
【随想】每日两题Day.12
【随想】每日两题Day.12
29 0
|
6月前
|
存储
【随想】每日两题Day.21
【随想】每日两题Day.21
39 0
|
6月前
【随想】每日两题Day.18
【随想】每日两题Day.18
41 0
|
6月前
|
算法
【随想】每日两题Day.1
【随想】每日两题Day.1
33 0
|
6月前
【随想】每日两题Day.19
【随想】每日两题Day.19
36 0