博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法]最大连续子数组和,最长重复子串,最长无重复字符子串
阅读量:4558 次
发布时间:2019-06-08

本文共 2020 字,大约阅读时间需要 6 分钟。

 

这几道题是我在面试中亲身经历的,在面试滴滴的过程中,我遇到过最大子数组和;在面试阿里的过程中,我遇到过最长重复子串;在面试头条过程中,我遇到过最长无重复字符子串。

1. 最大子数组和

比如,给定一个数组,

1, -2, 3, -4, 5, 6, -7

应该输出,

11。

public static int maxSubArray(int[] arr) {        int max = Integer.MIN_VALUE;        int k = Integer.MIN_VALUE;        for (int i = 0; i < arr.length; i++) {            if(k > 0){                k += arr[i];            }else{                k = arr[i];            }            if(max < k){                max = k;            }        }        return max;    }

2. 最长重复子串

比如,给定一个字符串,

"hello, my name is chenchi. is chenchi."

应该输出,

" is chenchi.",注:空格也要算。

public static String maxRepat(String input) {        if(input == null || input.length() == 0){            return null;        }        int max = Integer.MIN_VALUE;        int k = Integer.MIN_VALUE;        int first = 0;        for (int i = 1; i < input.length(); i++) {            for (int j = 0; j < input.length() - i; j++) {                if(input.charAt(j) == input.charAt(i + j)){                    k++;                }else{                    k = 0;                }                if(k > max){                    max = k;                    first = j - k + 1;                }            }        }        return input.substring(first, first + max);    }

3. 最长无重复字符子串

题目要求:

 

public static int longestSubstring(String s) {        if (s.length() == 0) {            return 0;        }        int maxLength = 1;        List
list = new ArrayList<>(); list.add(s.charAt(0)); for (int i = 1; i < s.length(); i++) { if (list.contains(s.charAt(i))) { int index = list.indexOf(s.charAt(i)); list = list.subList(index + 1, list.size()); list.add(s.charAt(i)); maxLength = Math.max(maxLength, list.size()); } else { list.add(s.charAt(i)); maxLength = Math.max(maxLength, list.size()); } } return maxLength; }

 

转载于:https://www.cnblogs.com/DarrenChan/p/9457158.html

你可能感兴趣的文章
关于java环境变量配置Javac命令无效问题
查看>>
常用的正则表达式
查看>>
Spring Boot使用@Async实现异步调用
查看>>
LeetCode 79. 单词搜索(Word Search)
查看>>
MySQL 多列索引优化小记
查看>>
J2SE核心开发实战(一)——认识J2SE
查看>>
gdbserver 远程调试问题:设置文件和so搜索路径
查看>>
SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
查看>>
推荐一个免费在线制作Banner的好地方
查看>>
javascript——select 标签的使用
查看>>
Python学习日志_2017/09/08
查看>>
《Python学习之路 -- Python基础之迭代器及for循环工作原理》
查看>>
struts2注解方式的验证
查看>>
CS 和 BS 的区别和优缺点
查看>>
(三)配置本地YUM源
查看>>
【LeetCode & 剑指offer刷题】数组题17:Increasing Triplet Subsequence
查看>>
【MySQL】ERROR 1045 (28000): Access denied for user的解决方法
查看>>
centos安装mysql57
查看>>
HDU 2002 计算球体积
查看>>
GROUP BY 与聚合函数 使用注意点
查看>>