leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
来源:互联网 发布:足球数据分析软件 编辑:程序博客网 时间:2024/05/20 07:31
每天坚持刷leetcode----给定一个字符串,找字符中的最大非重复子串
package leetcode.T003_LongestSubstringWithoutRepeatingCharacters;import java.util.HashMap;import java.util.Map;/** * @author 周志祥 E-mail: 1579655633@qq.com * @date 创建时间:2017-4-30 下午5:32:40 * @version 1.0 * @parameter * @since * @return */public class Solution { public static void main(String[] args) { String s = "cbbabcbabbaccab";System.out.println(lengthOfLongestSubstring(s));} /** * <pre> * Given a string, find the length of the longest substring without repeating characters. * For example, the longest substring without repeating letters for "abcabcbb" is "abc", * which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1. * * 题目大意: * 给定一个字符串,找字符中的最大非重复子串 * * 解题思路: * 用start记录当当处理的开始位置 * 历遍字符串,当当前字符从开始位置start开始已经出现过的时候,子串开始位置+1,否则更新map中的hash值为当前位置。 * </pre> * * @param s * @return */ // 可以处理所有的UTF-8字符 public static int lengthOfLongestSubstring(String s) { // 当前处理的开始位置(即:记录重复字符个数) int start = 0; // 无重复字符串最终长度 int result = 0; // 创建一个HashMap集合,用来存放遍历的字符和对应位置 Map<Character, Integer> map = new HashMap<Character, Integer>(s.length()); // 循环遍历字符串,判断是否有重复字符ch,可以用Map中的containsKey方法判断 for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); // 如果HashMap中包含该字符并且该字符的位置要大于start记录位置,就将start值增加1(记录重复字符个数) if(map.containsKey(ch) && map.get(ch) >= start) { start = map.get(ch) + 1; } // 如果不包含该字符,就将result结果增加(但是要去掉重复的字符个数,即:i-start+1) else { result = Math.max(result, i - start + 1); } // 将该字符和位置放入HashMap中 map.put(ch, i); } return result; }}
阅读全文
0 0
- leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
- 在一个字符串中找一个最大重复子串
- 在一个字符串中找一个最大重复子串
- leetcode-java.T005_LongestPalindromicSubstringTotal 给定一个字符串S,找出它的最大的回文子串
- 给定一个字符串,返回字符串中没有重复字符的最长子串的长度
- 找一个字符串中第一个非重复的字符
- python实现给定一个字符串,寻找最长非重复子串
- 求一个字符串中的最大连续重复子串
- 求给定的某一个字符串中的最长的没有重复字符的子串的长度
- 给定一个字符串,输出最长的重复子串
- 给定一个字符串,求出其最长的重复子串
- 给定一个字符串,求出其最长的重复子串。
- 给定一个字符串,求出其最长的重复子串。
- 给定一个字符串,输出最长的重复子串
- 给定一个字符串,求出其最长的重复子串
- 给定一个字符串,求出其最长的重复子串。
- 合法IP地址的判断、关于给定字符串,求最大不重复子串 -- JAVA 算法题
- 字符串中没有重复的字符最大子串
- 解决安卓style文件中设置Activity退出动画无效或者被干扰的问题
- leetcode-java.T007_ReverseInteger 整数翻转
- 一个老程序员写给换行业的朋友的信
- 在前端开发过程中遇到的问题1
- leetcode-java.T005_LongestPalindromicSubstringTotal 给定一个字符串S,找出它的最大的回文子串
- leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
- Python ——raise
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- 重读UNIX网络编程第二章笔记修正
- Android第一行代码(第二版)
- MD5加密工具类
- 网络状态判断工具类
- bzoj1663 [Usaco2006 Open]赶集
- SharedPreferences存储工具类