美团2015笔试题以及最优解(二)
2015-12-22 10:36
375 查看
题目:
* 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。
* 举例,str="abcd",
* 返回 4。
* str="aabcb",
* 最长无重复字符子串为"abc",
* 返回 3。
算法思路:这是一个标准的最长无重复子串的问题,只需要利用哈希表记录当前元素出现的历史位置,通过比较即可实现算法。(QQ:3036643587 欢迎交流)
* 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。
* 举例,str="abcd",
* 返回 4。
* str="aabcb",
* 最长无重复字符子串为"abc",
* 返回 3。
算法思路:这是一个标准的最长无重复子串的问题,只需要利用哈希表记录当前元素出现的历史位置,通过比较即可实现算法。(QQ:3036643587 欢迎交流)
/** * 给定一个字符串 str,返回 str 的最长无重复字符子串的长度。 * 举例,str="abcd", * 返回 4。 * str="aabcb", * 最长无重复字符子串为"abc", * 返回 3。 * @author Administrator * */ public class LongestNoReportSubString { public static int getLongestSub(String s){ if(s==null||s.equals("")){ return 0; } int[] map = new int[256]; for(int i=0;i<256;i++){ map[i] = -1; } int pre = -1; int len = 0; char[] arr = s.toCharArray(); for(int i=0;i<arr.length;i++){ pre = Math.max(pre, map[arr[i]]); len = Math.max(len, i-pre); map[arr[i]] = i; } return len; } public static void main(String[] args) { String s = "aabcbb"; System.out.println("最长无重复子串的长度是"+getLongestSub(s)); } }
相关文章推荐
- 设计模式(二十)---状态模式
- Photoshop设计一个非常优美的iOS应用图标
- VERSION_CODES 的 含义
- Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10
- POSIX定时器timer_create、timer_settime、timer_delete
- phantomJS 、casperjs
- C++ 定义适应不同平台调用不同代码的方法
- HTML5入门5---HTML5控件元素
- iOS9 未受信任的企业级开发者
- JDK自带方法实现RSA非对称加密
- 仿微信雷达扫描
- mysql常用查询归纳
- C#根据当前时间获取周,月,季度,年度等时间段的起止时间
- tomcat的运行脚本
- c#语法笔记
- iOS25 大文件下载 文件输出流
- logstash windows下添加服务启动管理
- Ubuntu14.04安装swift2.2
- IntelliJ IDEA转码
- 重读JavaScript:函数(一)