Java每日一练(20230512) 最大间距、串联子串、最长回文子串

news2024/12/23 0:39:55

目录

1. 最大间距  🌟🌟🌟

2. 串联所有单词的子串  🌟🌟🌟

3. 最长回文子串  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 最大间距

给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。

如果数组元素个数小于 2,则返回 0。

示例 1:

输入: [3,6,9,1]
输出: 3
解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。

示例 2:

输入: [10]
输出: 0
解释: 数组元素个数小于 2,因此返回 0。

说明:

  • 你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。
  • 请尝试在线性时间复杂度和空间复杂度的条件下解决此问题。

出处:

https://edu.csdn.net/practice/27637463

代码:

import java.util.*;
public class maximumGap {
    public static class Solution {
        public int maximumGap(int[] nums) {
            int len = nums.length;
            Arrays.sort(nums);
            int temp = 0;
            int res = 0;
            if (len < 2)
                return 0;
            for (int i = 0; i < len - 1; i++) {
                temp = nums[i + 1] - nums[i];
                res = Math.max(res, temp);
            }
            return res;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        int[] nums = {3,6,9,1};
        System.out.println(s.maximumGap(nums));
        int[] nums2 = {10};
        System.out.println(s.maximumGap(nums2));
    }
}

输出:

3
0


2. 串联所有单词的子串

给定一个字符串 和一些长度相同的单词 words。找出 中恰好可以由 words 中所有单词串联形成的子串的起始位置。

注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。

示例 1:

输入:s = "barfoothefoobarman", words = ["foo","bar"]
输出:[0,9]
解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出的顺序不重要, [9,0] 也是有效答案。

示例 2:

输入:s = "wordgoodgoodgoodbestword", words = ["word","good","best","word"]
输出:[]

以下程序实现了这一功能,请你填补空白处内容:

```Java
class Solution {
    public List<Integer> findSubstring(String s, String[] words) {
        List<Integer> res = new ArrayList<>();
        if (s == null || s.length() == 0 || words == null || words.length == 0)
            return res;
        HashMap<String, Integer> map = new HashMap<>();
        int one_word = words[0].length();
        int word_num = words.length;
        int all_len = one_word * word_num;
        for (String word : words) {
            map.put(word, map.getOrDefault(word, 0) + 1);
        }
        for (int i = 0; i < one_word; i++) {
            int left = i, right = i, count = 0;
            HashMap<String, Integer> tmp_map = new HashMap<>();
            while (right + one_word <= s.length()) {
                String w = s.substring(right, right + one_word);
                right += one_word;
                if (!map.containsKey(w)) {
                    count = 0;
                    left = right;
                    tmp_map.clear();
                } else {
                    tmp_map.put(w, tmp_map.getOrDefault(w, 0) + 1);
                    count++;
                    while (tmp_map.getOrDefault(w, 0) > map.getOrDefault(w, 0)) {
                        ______________________;
                    }
                    if (count == word_num)
                        res.add(left);
                }
            }
        }
        return res;
    }
}
```

出处:

https://edu.csdn.net/practice/27637464

代码:

import java.util.*;
public class findSubstring {
    public static class Solution {
        public List<Integer> findSubstring(String s, String[] words) {
            List<Integer> res = new ArrayList<>();
            if (s == null || s.length() == 0 || words == null || words.length == 0)
                return res;
            HashMap<String, Integer> map = new HashMap<>();
            int one_word = words[0].length();
            int word_num = words.length;
            int all_len = one_word * word_num;
            for (String word : words) {
                map.put(word, map.getOrDefault(word, 0) + 1);
            }
            for (int i = 0; i < one_word; i++) {
                int left = i, right = i, count = 0;
                HashMap<String, Integer> tmp_map = new HashMap<>();
                while (right + one_word <= s.length()) {
                    String w = s.substring(right, right + one_word);
                    right += one_word;
                    if (!map.containsKey(w)) {
                        count = 0;
                        left = right;
                        tmp_map.clear();
                    } else {
                        tmp_map.put(w, tmp_map.getOrDefault(w, 0) + 1);
                        count++;
                        while (tmp_map.getOrDefault(w, 0) > map.getOrDefault(w, 0)) {
                            String t_w = s.substring(left, left + one_word);
                            count--;
                            tmp_map.put(t_w, tmp_map.getOrDefault(t_w, 0) - 1);
                            left += one_word;
                        }
                        if (count == word_num)
                            res.add(left);
                    }
                }
            }
            return res;
        }
    }
    public static void main(String[] args) {
        Solution sol = new Solution();
        String s = "barfoothefoobarman";
        String[] words = {"foo","bar"};
        System.out.println(sol.findSubstring(s, words));
        String s2 = "wordgoodgoodgoodbestword";
        String[] words2 = {"word","good","best","word"};
        System.out.println(sol.findSubstring(s2, words2));
    }
}

输出:

[0, 9]
[]


3. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

示例 3:

输入:s = "a"
输出:"a"

示例 4:

输入:s = "ac"
输出:"a"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母(大写和/或小写)组成

出处:

https://edu.csdn.net/practice/27637465

代码:

import java.util.*;
public class longestPalindrome {
    public static class Solution {
        public String longestPalindrome(String s) {
            int ti = 0, maxlen = 0, i, t;
            for (i = 0; i < s.length(); i++) {
                t = 1;
                while (t <= i && i + t < s.length()) {
                    if (s.charAt(i + t) == s.charAt(i - t))
                        t++;
                    else
                        break;
                }
                t--;
                if (2 * t + 1 > maxlen) {
                    ti = i - t;
                    maxlen = 2 * t + 1;
                }
            }
            for (i = 0; i < s.length(); i++) {
                t = 1;
                while (t <= i + 1 && i + t < s.length()) {
                    if (s.charAt(i - t + 1) == s.charAt(i + t))
                        t++;
                    else
                        break;
                }
                t--;
                if (2 * t > maxlen) {
                    ti = i - t + 1;
                    maxlen = 2 * t;
                }
            }
            return s.substring(ti, ti + maxlen);
        }
    }
    public static void main(String[] args) {
        Solution sol = new Solution();
        String s = "babad";
        System.out.println(sol.longestPalindrome(s));
        String s2 = "cbbd";
        System.out.println(sol.longestPalindrome(s2));
    }
}

输出:

bab
bb


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++ 11标准模板(STL) std::vector<bool> (二)

定义于头文件 <vector> template<class Allocator> class vector<bool, Allocator>; std::vector<bool> 是 std::vector 对类型 bool 为空间提效的特化。 std::vector<bool> 中对空间提效的行为&#xff08;以及它是否有优化&#xff09;是实现…

使用ChatGPT完成部门和个人季度工作总结

“疫后元年“2023年的第一季度即将过去&#xff0c;相信各位社会人们都过得比往年更加紧张充实吧&#xff1f;转眼又到了完成季度工作总结的时间&#xff0c;完成本职工作之余还要抽出专门的时间完成优秀的工作总结报告&#xff0c;又更让大家本不富裕的休息时间雪上加霜。那么…

SCS【24】单细胞数据量化代谢的计算方法 (scMetabolism)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a; Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅&#xff0c;述说单细胞测序的前世…

Oracle Cloud和足球

Oracle除了我们熟知的数据库产品&#xff0c;它还有很多技术和产品栈&#xff0c;而且在实践层面&#xff0c;已经有了很多可借鉴的案例&#xff0c;如果了解英超的朋友&#xff0c;可以发现最近几个赛季&#xff0c;英超的转播画面图标中&#xff0c;会出现Oracle Cloud&#…

操作系统的最强入门科普(Unix/Linux篇)

大家好&#xff0c;我是小枣君。 今天这篇文章&#xff0c;我们来聊聊操作系统&#xff08;Operating System&#xff09;。 说到操作系统&#xff0c;大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑&#xff0c;使用的是windows和macOS系统&#xff1b;用…

为什么拿低绩效的人从来不反思自己的原因?连公司的前90%都挤不进去,还好意思找别人的理由?...

绩效是关乎打工人切身利益的大事&#xff0c;拿了高绩效欢天喜地&#xff0c;拿了低绩效垂头丧气&#xff0c;这是人之常情&#xff0c;但最近一位字节跳动的程序员却怒斥那些拿低绩效的人&#xff1a; 为什么拿m-&#xff08;低绩效&#xff09;的人从来不反思自己垫底的原因&…

C++三部曲|C++核心思想

| 导语 C 的起源可以追溯到 40 年前&#xff0c;但它仍然是当今使用最广泛的编程语言之一&#xff0c;C发明人Bjarne Stroustrup 一开始没想到 C 会获得如此大的成功&#xff0c;他说&#xff1a;“C 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标&#xff0c;就是…

前端014_标签模块_修改功能

标签模块_修改功能 1、需求分析2、Mock 添加查询数据3、Mock 添加提交修改数据4、Api 调用接口回显数据5、提交修改后的数据6、验证1、需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出标签信息渲染。修改后点击确定 提交修改数据。 2、Mock 添加查询数据 请求URL: /a…

在OpenCV中使用Canny边缘检测

边缘检测是非常常见和广泛使用的图像处理&#xff0c;对于许多不同的计算机视觉应用非常必要&#xff0c;如数据提取&#xff0c;图像分割&#xff0c;在更细粒度的特征提取和模式识别中。它降低了图像中的噪声和细节数量&#xff0c;但保留了图像的结构。 Python中的Canny边缘…

祁宁:社区问答是激荡企业高级智慧的头脑风暴 | 开发者说

在祁宁家里&#xff0c;有一套完整的赛车模拟器&#xff0c;他甚至还请人到国外代购了最新的 VR 设备。作为沉浸式赛车游戏发烧友&#xff0c;除了享受速度与激情带来的愉悦感&#xff0c;祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。 Answer.dev 就是将技术…

Studio Bot - 让 AI 帮我写 Android 代码

Google I/O 2023 不出所料&#xff0c;今年的 I/O 大会只突出了一个关键词 “AI”。Google 旗下的各类产品都成了其展示 AI 实力的舞台。连面向开发者的产品 Android Studio 也新增了 Studio bot 功能&#xff0c;希望通过 AI 帮助开发者更轻松地写代码&#xff1a; Studio Bot…

STM32F4_内部温度传感器

目录 1. 什么是温度传感器 2. 温度传感器简介 3. 库函数配置内部温度传感器 4. 实验程序 4.1 main.c 4.2 ADC.c 4.3 ADC.h 1. 什么是温度传感器 温度传感器是一种测量物体冷热程度的设备&#xff0c;以可读的方式通过电信号提供温度测量。比较常见的如热电偶温度传感器。…

越来越多的单身女性开始买房了

近日&#xff0c;越来越多的单身女性开始购买房产&#xff0c;这一现象引起了社会的广泛关注。 根据中国青年报社会调查中心联合问卷网对2006名受访者进行的一项调查显示&#xff0c;84.2%的受访者认为近几年身边单身女性购房的现象增多了&#xff0c;而93.9%的受访者支持单身女…

无监督域适应 (UDA)(3)

本帖介绍基于 bi-classifier adversarial learning 的改进。 一、动机 模型训练在两个步骤之间交替进行:(I)约束两个分类器的学习&#xff0c;以最大化未标记目标域数据的预测差异;(II)约束特征提取器的学习&#xff0c;以最小化这种差异。 尽管这种方法是一种优雅的表述&am…

Call for Papers丨第一届LLM@IJCAI‘23 Symposium,大会主席陈雷、杨强、唐杰

大规模语言模型&#xff08;LLMs&#xff09;&#xff0c;如ChatGPT和GPT-4&#xff0c;以其在自然语言理解和生成方面的卓越能力&#xff0c;彻底改变了人工智能领域。 LLMs广泛用于各种应用&#xff0c;如语音助手、推荐系统、内容生成模型&#xff08;如ChatGPT&#xff09…

开源进展 |WeBASE更新啦,快来了解新特性!

WeBASE&#xff08;WeBank Blockchain Application Software Extension&#xff09; 是在区块链应用和FISCO BCOS底层之间搭建的一套通用组件&#xff0c;围绕交易、合约、密钥管理、数据、可视化管理来设计各个模块&#xff0c;屏蔽了区块链底层的复杂度&#xff0c;从而极大降…

多模态GPT:国内发布一款可以在线使用的多模态聊天机器人!快来把玩~

论文: MultiModal-GPT: A Vision and Language Model for Dialogue with Humans代码: https://github.com/open-mmlab/Multimodal-GPT &#xff08;包含代码、数据、demo&#xff09;作者&#xff1a;OpenMMLab 深度学习自然语言处理 原创作者: 林哲乐 使用视觉和语言指令训练一…

Linux基础学习---3、时间日期类、用户管理命令、用户组管理命令

1、时间日期类 1、基本语法date [Option] ...[Format]2、选项说明 选项功能-d<时间字符串>显示指定的“时间字符串”表示的时间&#xff0c;而非当前时间-s<日期时间>设置日期时间 3、参数说明 参数功能<日期时间格式>指定显示时使用的日期时间格式 1.1…

一、数据库设计

整个项目的设计包括5个数据库&#xff1a; glkt_activity:优惠券的相关设计 glkt_order:订单的相关设计 glkt_user:得到微信授权的账号信息的相关设计 glkt_vod:课程信息的相关设计 glkt_wechat:微信公众号的相关设计 glkt_activity&#xff1a; coupon_info:优惠券的信息 cou…

java+iClient Openlayers实现土壤墒情旱情灾害模拟预报预警分析

应用及软件实现效果图&#xff1a; 一、应用背景 作为一个农村长大的人&#xff0c;我非常关注自然灾害和气候变化对土地旱情墒情影响。近年来&#xff0c;干旱和洪涝灾害在很多地方频繁发生&#xff0c;给人们的生命财产安全带来了极大的威胁。因此&#xff0c;旱情和墒情模拟…