给你两个字符串: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 setA = new ArrayList<>();
ArrayList setB = new ArrayList<>();
// 输入集合A的元素
int num;
while ((num = scanner.nextInt()) != -1) {
setA.add(num);
}
// 清除换行符
scanner.nextLine();
// 输入集合B的元素
while ((num = scanner.nextInt()) != -1) {
setB.add(num);
}
// 计算差集
ArrayList difference = new ArrayList<>();
for (Integer element : setA) {
if (!setB.contains(element)) {
difference.add(element);
}
}
// 输出差集
for (Integer element : difference) {
System.out.print(element + " ");
}
scanner.close();
}
}
这道题的输入很关键,要用set来接收不知长度的输入,然后怎么处理的输入很关键。要重点复习学习!
【问题描述】
输入两个字符串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();
}
}
正则表达式一定要弄明白是怎么回事!!这个题现在还有点不懂!