当前位置: 首页 > news >正文

JAVA练习62-无重复字符的最长子串、最长回文子串

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目1-无重复字符的最长子串

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

二、题目2-最长回文子串

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

2月26日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目1-无重复字符的最长子串

1.题目描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.使用两个指针i和index,

2.最开始的时候两个指针都指向第一个元素,然后i往后移,把扫描过的元素都放到map中,

3.如果i扫描过的元素没有重复的就一直往后移,记录最大值max,

4.如果i扫描过的元素有重复的,就更新index的位置,

5.最后遍历完字符串,输出最大值

2.2 代码

代码如下(示例):

class Solution {public int lengthOfLongestSubstring(String s) {if(s.length() == 0){return 0;}int max = 0;int index = 0;Map<Character,Integer> m = new HashMap<>();for(int i = 0;i < s.length();i ++){//如果右重复元素则更新index的值if(m.containsKey(s.charAt(i))){index = Math.max(index,m.get(s.charAt(i)) + 1);}m.put(s.charAt(i), i);max = Math.max(max,i - index + 1);}return max;}
}

二、题目2-最长回文子串

1.题目描述

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

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

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

示例 2: 

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.先判断输入的字符串长度是否大于2,如果不大于2,则直接输出该字符串

2.使用暴力求解的方法,两个for循环遍历字符串,并判断所取部分是否为回文串,直到遍历完成

2.2 代码

代码如下(示例):

class Solution {public String longestPalindrome(String s) {int length = s.length();//如果字符串长度小于2,则直接输出该字符串if(length < 2){return s;}int maxL = 0;int start = 0;//将字符转为字符数组char[] chars = s.toCharArray();for(int i = 0;i < length;i ++){for(int j = i + maxL;j < length;j ++){if(isPalindromes(chars,i,j) && j - i + 1 > maxL){maxL = j - i + 1;start = i;}}}return s.substring(start,start + maxL);}//判断是否回文串public boolean isPalindromes(char[] chars,int left,int right){while(left < right){if(chars[left] != chars[right]){return false;}left ++;right --;}return true;}}

总结

提示:这里对文章进行总结:
 

http://www.lryc.cn/news/20756.html

相关文章:

  • 【JavaWeb】复习重点内容
  • 基于粒子群改进的灰色神经网络的时间序列预测,PSO-GNN模型,神经网络案例之20
  • Java中的反射使用
  • urho3d工具
  • HashMap数据结构
  • BFC的含义以及应用
  • 电脑技巧:分享8个Win11系统必备小技巧
  • C/C++每日一练(20230226)
  • Vue 3第二章:Vite文件目录结构及SFC语法
  • Leetcode 剑指 Offer II 016. 不含重复字符的最长子字符串
  • TCP 的演化史-sack 与 reordering metric
  • 【Spring6】| Spring的入门程序、集成Log4j2日志框架
  • 包子凑数(完全背包)
  • Spring超级全家桶,学完绝对是惊艳面试官的程度
  • Redis主要数据类型
  • 【Linux | ELK 8.2】搭建ELKB集群Ⅰ—— 实验环境说明和搭建Elasticsearch集群
  • 不同情况下*p和*p的区别(指针)
  • Vuex基础语法
  • 刚上岸字节测试开发岗,全网最真实的大厂面试真题
  • Mac监控键盘输入并执行动作
  • Transformer输出张量的值全部相同?!
  • 港科夜闻|全国政协副主席梁振英先生率香港媒体高管团到访香港科大(广州)...
  • XML调用 CAPL Test Function
  • Linux网络配置(NAT)
  • 数据结构——第二章 线性表(8)——线性表总结
  • 3.7寸按键翻页工牌
  • 西北工业大学大学物理(II)选填解析2019-2020期末
  • [计算机网络(第八版)]第一章 概述(章节测试/章节作业)
  • 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典
  • 电子科技大学数据库与软件工程三