算法设计与分析HW3:LeetCode3
来源:互联网 发布:九堡做淘宝的在哪 编辑:程序博客网 时间:2024/06/05 18:45
Description:
Given a string, find the length of the longest substring without repeating characters.
Note:
Note that the answer must be a substring,not asubsequence.
Solution:
此问题解决方法利用了JAVA的HashSet的数据结构来实现,HashSet是利用底层HashMap来存储所有元素的,因此能依据字符串下标更
方便地获取、添加、删除字符元素,具体实现步骤如下:
1.判断输入字符串是否为空,若是,返回0
2.初始化保存最大子字符串的哈希表、最大子字符串长度、子串开始位置、索引下标
3.当索引值小于字符串长度时跳转4,否则跳至6
4.获取当前索引下标指示的字符串的字符元素,若子串哈希表不存在该元素,将其加入表
5.若子串哈希表包含该字符元素,表示一个子串的终结,获取当前子串表的长度值,如果该值大于当前最大子串长度变量的值,
则将其赋值给该变量
6.将当前字符元素之前的所有字符元素移出子串哈希表,更新子串开始位置为当前索引下标的值,索引下标加1,跳回3
7.比较当前子串哈希表的长度值与当前保存最大子串长度变量的值,返回两者中较大的值。
Codes:;
package HW3;import java.util.HashSet;public class HW3 {public static int lengthOfLongestSubString(String s){if(s==null||s.length()==0)return 0;HashSet<Character> stringSet=new HashSet<Character>();int subStringMax=0;int subStart=0;int index=0;while(index<s.length()){char c=s.charAt(index);if((stringSet.contains(c))==false){stringSet.add(c);}else{subStringMax=Math.max(subStringMax, stringSet.size());while(subStart<index&&s.charAt(subStart)!=c){stringSet.remove(s.charAt(subStart));subStart++;}}index++;}subStringMax=Math.max(subStringMax,stringSet.size());return subStringMax;}}
Results:
0 0
- 算法设计与分析HW3:LeetCode3
- 算法分析与设计
- 算法设计与分析
- 算法分析与设计
- 算法设计与分析
- 算法设计与分析
- 算法分析与设计
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法设计与分析
- 算法分析与设计
- 书名: 算法分析与设计
- iOS代码混淆总结
- java---maven项目的创建和导出
- C#中集合里面放集合的细节问题
- Linux环境下nodejs的安装图文教程
- Find the Difference
- 算法设计与分析HW3:LeetCode3
- startService启动过程分析
- hdu 5938 Four Operations(模拟)
- Python中的None与 NULL(即空字符)的区别
- [译]Android注解--@hide
- 异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher 解决办法
- c++第二次作业-百钱百鸡问题
- 开发环境搭建---交叉工具链、makefile编写、连接器脚本、Eclipse调试
- Java如何生成Code128C条形码