本文主要是介绍【随想】每日两题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> setA = new ArrayList<>();ArrayList<Integer> 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<Integer> 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();}
}
思考:
正则表达式一定要弄明白是怎么回事!!这个题现在还有点不懂!
这篇关于【随想】每日两题Day.11的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!