日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常考数据结构与算法:找到字符串的最长无重复字符子串

發布時間:2025/6/15 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常考数据结构与算法:找到字符串的最长无重复字符子串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

給定一個數組arr,返回arr的最長無的重復子串的長度(無重復指的是所有數字都不相同)。

?

示例1

輸入

[2,3,4,5]

返回值

4

示例2

輸入

[2,2,3,4,3]

返回值

3

?

方法一:暴力算法

? 數組中的每個元素都循環一遍。比較每次循環的結果。效率極低。

public class MaxLengthMe {public static void main(String[] args) {int[] arr = {1,2,3,1,1,2};MaxLengthMe maxLengthMe = new MaxLengthMe();System.out.println(maxLengthMe.maxLength(arr));}/**** @param arr int整型一維數組 the array* @return int整型*/public int maxLength (int[] arr) {int max = 0;int[] arrTemp = new int[arr.length];int index = 0;for (int i = 0; i < arr.length; i++) {index = 0;for (int j = i; j <arr.length ; j++) {if(!isEqual(arrTemp, index, arr[j])){index++;}else{break;}}if(index > max){max = index;}}return max;}private boolean isEqual(int[] arrTemp,int index, int compare){for (int i = 0; i < index; i++) {if(arrTemp[i] == compare){return true;}}arrTemp[index] = compare;return false;} }

?

方法二: 雙指針

public class MaxLengthMe {public static void main(String[] args) {int[] arr = {1,2,1,3,4};MaxLengthMe maxLengthMe = new MaxLengthMe();System.out.println(maxLengthMe.maxLength(arr));}public int maxLength(int[] arr) {int maxLength = 0;int length = 0;int index = 0;int to = 0;int from = 0;//循環,每次增加一個元素,判斷該字符在之前的數組中是否已經存在,//存在,則將from變為存在的元素索引+1,不存在,則to索引自增1,判斷下一個元素while(to<arr.length){index = isEqual2(arr, from, to);if(-1 != index){// 有重復的length = to-from; // 無重復字符字串的長度// 1 2 3 4 5 4 6 7 8from = index+1; // 新的開始, 不用數組arr中每個元素if(maxLength < length){maxLength = length;}}else{to ++;}}// 處理最后一個子串if (to - from > maxLength) {maxLength = to - from;}return maxLength;}private int isEqual(int[] arr,int from, int to){for (int i = from; i < to; i++) {if(arr[i] == arr[to]){// 返回相等的位置return i;}}return -1;}}

?

?

總結

以上是生活随笔為你收集整理的常考数据结构与算法:找到字符串的最长无重复字符子串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。