题目描述

给定一个数组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;}}

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

  1. 牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案

    牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案 题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 题解: i和j两个指针分别指不重复子 ...

  2. 《程序员代码面试指南》第五章 字符串问题 找到字符串的最长无重复字符子串...

    题目 找到字符串的最长无重复字符子串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955166.html

  3. 找到字符串的最长无重复字符子串

    题目: 给定一个字符串str,返回str中最长无重复字符子串的长度. 举例: str = "abcd",返回4.  str = "aabcb",返回3. 基本思 ...

  4. 【字符串】最长无重复字符子串练习题

    **对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度. 给定一个字符串A及它的长度n,请返回它的最长无重复字符子串长度.保证A中字符全部为小写英文字符,且长度小于等于500. ...

  5. 求字符串中最长无重复字符的子串

    题目:求一个字符串中最长的没有重复字符的子串. 思路:用hash表从i遍历查看包含i的最长 无重复子串. int max_unique_substring2(char * str) {int i,j; ...

  6. 常考数据结构与算法:反转字符串

    题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1000) 示例 输入 "abcd" 返回值 "dcba" publi ...

  7. 常考数据结构与算法:将字符串转为整数

    题目描述 实现函数 atoi .函数的功能为将字符串转化为整数 提示:仔细思考所有可能的输入情况.这个问题没有给出输入的限制,你需要自己考虑所有可能的情况. 思路: 1. 需要判断正负数   2. 需 ...

  8. 常考数据结构与算法:输出二叉树的右视图

    题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...

  9. 常考数据结构与算法:求二叉树的层序遍历

    题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...

最新文章

  1. python 删除字符串中重复的元素
  2. Javascript操作table,tr,td和表格CSS样式设置小常识
  3. CSP认证201412-2 Z字形扫描[C++题解]:模拟
  4. PHP中的dirname
  5. Hadoop权威指南 _02大体目录
  6. RGB和RGBQUAD的区别
  7. 面试字节跳动后的2点总结,建议收藏!
  8. 核心动画与UIView
  9. selector多路复用_多路复用器Selector
  10. matlab Cartesian,Matlab - Standard Deviation of Cartesian Points
  11. php编写程序计算积分_PHP论坛实现积分系统的思路代码详解
  12. C语言万年历设计制作
  13. PLM基础概述(解决方案架构师认证:PLM基础) | 达索系统百世慧
  14. 电脑结构和CPU、内存、硬盘三者之间的关系
  15. 【实战总结】根据地图经纬度及范围查询坐标点信息
  16. 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI
  17. Web入门学习笔记1——建立第一个网站
  18. 玩转系统|如何Windows Update自动更新
  19. nth-child的使用方法
  20. Java从接触到放弃(二十一)--网络编程

热门文章

  1. 《利用Python》进行数据分析:Numpy基础2 创建数组
  2. ls -Slh du -h
  3. mysql decode encode 乱码问题
  4. python学习笔记---字符串
  5. Enumeration接口
  6. 淘宝旺铺基础版装修出专业版效果(不花钱也一样做到)
  7. 我的Blog页面设计
  8. java程序向mysql插入中文变问号
  9. 沪江基于容器编排的Dev/Ops流程
  10. MySQL 架构组成—存储引擎