算法
gjl12138
Java程序猿成长中
展开
-
括号匹配算法
在文本编辑中,有必要检测一个字符串中的括号是否匹配。括号包含小括号(),中括号[ ],大括号{ },简单情况下是只包含这三种括号中的一种,可以提供一个计数器,当遇到左括号计数器值加一,遇到一个右括号,计数器值减一。遍历一遍字符串,最后计数器值为0,那么括号是匹配的,否则不匹配。但是,如果涉及两种以上的括号,这种办法就会失效。所以,选择用堆栈来辅助记录,当遇到左括号就压入栈中,当遇到右括号,弹出堆栈...原创 2019-11-20 15:39:24 · 548 阅读 · 0 评论 -
找无重复字符的最长子串长度之滑动窗口算法
给定一个字符串,找出其中无重复字符的最长字串长度。如“abcabc”,结果为3;如”aaa“,结果为1。求解算法有多种,本篇主要介绍其中的滑动窗口算法。什么是滑动窗口? 滑动窗口是数组/字符串问题中常用的抽象概念。 窗口通常是在数组/字符串中由开始和结束索引定义的一系列元素的集合,即 [i,j)[i, j)[i,j)(左闭,右开)。而滑动窗口是可以将两个边界向某一方向“滑动”的...原创 2019-11-17 15:02:18 · 900 阅读 · 0 评论 -
找最长回文子串之中心扩展算法
给定一个字符串,找到其中的最长回文子串,如“aababb”,结果为“aba”,或者“bab”;又如“abccbab",结果为”abccba“。求解的方法有很多种,这里介绍其中一种:中心扩展算法。中心扩展算法顾名思义,把字符串中的某一个字符作为中心,向中心的两边扩展查找。当中心左右两边的字符一样时,肯定构成一个回文子串,并且继续向两边扩展查找,直至达到边界。而一个字符串中存在2n-1个这样的中心...原创 2019-11-17 14:25:31 · 482 阅读 · 1 评论