【随想】每日两题Day.11

2023-10-08 22:30
文章标签 每日 两题 随想 day.11

本文主要是介绍【随想】每日两题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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168403

相关文章

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(LeetCode) 3. 63. 不同路径 II - 力扣(LeetCode) 1. 91. 解码方法 - 力扣(LeetCode) //思路:动态规划。 cl

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

每日一题——第八十一题

打印如下图案: #include<stdio.h>int main() {int i, j;char ch = 'A';for (i = 1; i < 5; i++, ch++){for (j = 0; j < 5 - i; j++){printf(" ");//控制空格输出}for (j = 1; j < 2 * i; j++)//条件j < 2 * i{printf("%c", ch

每日一题,力扣leetcode Hot100之238.除自身以外数组的乘积

乍一看这个题很简单,但是不能用除法,并且在O(N)时间复杂度完成或许有点难度。 考虑到不能用除法,如果我们要计算输出结果位置i的值,我们就要获取这个位置左边的乘积和右边的乘积,那么我新设立两个数组L和R。 对于L来说,由于表达的是位置i左边的数的乘积,那么L[0]=1,因为第一个数字左边没数那么为了不影响乘积初始值就设置为1,那么L[1]=L[0]*nums[0],那么L[i]=L[i-1

英语每日一段 195

Promising economic indicators won’t instantly reverse the lingering impact of hard times for millions of families, workplace culture expert Jessica Kriegel said. “Perception and reality are sometimes

GitHub每日最火火火项目(9.7)

项目名称:polarsource / polar 项目介绍:polar 是一个开源的项目,它是 Lemon Squeezy 的替代方案,具有更优惠的价格。该项目旨在让开发者能够凭借自己的热情进行编码并获得报酬。通过使用 polar,开发者可以更轻松地实现自己的创意和项目,并从中获得收益。 项目地址:https://github.com/polarsource/polar项目名称:psf / bla

【每日一题】LeetCode 2379.得到K个黑块的最少涂色次数(字符串、滑动窗口)

【每日一题】LeetCode 2379.得到K个黑块的最少涂色次数(字符串、滑动窗口) 题目描述 给定一个字符串 blocks,其中每个字符代表一个颜色块,可以是 ‘W’(白色)或 ‘B’(黑色)。你需要找到一个至少包含 k 个连续黑色块的子串。每次操作可以将一个白色块变成黑色块。你的任务是找到至少出现一次连续 k 个黑色块的最少操作次数。 和该题目类似:【每日一题】LeetCode 202