问题
解答
1.暴力解法
算法
创建allUnique函数,如果子字符串中的字符都是唯一的,它会返回 True,否则会返回 False。遍历字符串 s 的所有可能的子字符串,更新子串长度的最大值。
时间复杂度:O(N^3)
public class Solution
{
public int lengthOfLongestSubstring(String s)
{
int n = s.Length;
int ans = 0;
for (int i = 0; i
题目一:(求最长相同字母)
给定一组字符串,包含大小写字母,求由同一字母组成的最长子串,字母不区分大小写。
例如:aAbbBBcccCC 最长子串:cccCC
例如:ddddDDDDeeeEEEeeeEEEeee 最长子串:eeeEEEeeeEEEeee
状态定义:dp[i]为以i为结尾的相同字母子串的长度
以字符串 "aAbbBBcc" 为例, 看状态变化.
字符串 a A b b B B c c
状态值 1 2 1 2 3 4 1 2
得出状态转移方程为:
i
无重复字符的最大子串
题目
给出一个字符串,请你找出其中不含有重复字符的最长子串的长度。
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
思路
构造一个辅助字符串 sub ,运用字符串的 find 函数判断当前字符是否存在于辅助字符串 sub 中,如果不存在则添加进去,如果存在则将 sub[pos+1:] + s[i]赋值给 sub ,并相应地对 max 进行修改,最后将 ma
这道题使用双指针(滑动窗口)+哈希表可破。
public int lengthOfLongestSubstring(String s) {
if (s==null||s.equals(""))
return 0;
int start = 0;
int end = 0;
char[] arr = s.toCharArray();
int[] hash = new int[128]; //构建