leetcode

来源:互联网 发布:零基础学算法第一章 编辑:程序博客网 时间:2024/06/05 08:25

1. 题目

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring"pwke" is a subsequenceand not a substring.


2. 关键算法

双指针


3. 代码实现

import java.util.HashMap;/** * @author: UniqueZ_ * @file: leetcode - length of longest substring without repeating characters   * @date: 2017-07-28 */public class LongestSubstring {public int lengthOfLongestSubstring(String s) {int begin = 1, end = 0;int strLength = s.length();HashMap<Integer, String> result = new HashMap<>();int returnVal = 1;// 字符串小于等于1if (strLength <= 1) {result.put(strLength, s);return strLength;}while (begin < strLength) {System.out.println(begin);String currentStr = s.substring(end, begin);String currentChar = s.substring(begin, begin+1);// 当前begin对应的字符, 出现在当前begin - end之间的字符串if (currentStr.contains(currentChar)) {result.put(begin - end, currentStr);end++;continue;}begin++;// begin达到字符串结尾时, 把当前字符串送进哈希表if (begin == strLength) {result.put(begin - end, s.substring(end, begin));}}// 如果哈希表为空, 将整个字符串放进哈希表if (result.isEmpty()) {result.put(strLength, s);}// 获取最大长度for (Integer key: result.keySet()) {if (returnVal < key) {returnVal = key;}}return returnVal;}public static void main(String[] args) {String s = "abcabcbb";LongestSubstring obj = new LongestSubstring();obj.lengthOfLongestSubstring(s);}}


原创粉丝点击