算法与数据结构
sqh_bzbn
这个作者很懒,什么都没留下…
展开
-
字符串循环移位
问题描述:给定一个字符串,把字符串前k个字符移动到尾部。例:字符串“abcdefg”左移3为变成“defgabc”。解决思路:引入矩阵中(A'B')'=BA的思想(A'为A的转置矩阵)。比如(abc)'=cba, (defg)'=gfed, (cbagfed)'=defgabc。这样的算法时间复杂度是O(n),空间复杂度是O(1)。代码如下:public class Main { pub原创 2016-05-13 09:07:38 · 490 阅读 · 0 评论 -
最长括号匹配问题
问题描述:给定字符串,仅包含左括号和右括号('('和')'),找出最长匹配的括号子串,返回子串长度。算法思路如下: - 记起始匹配位置start=-1,最长子串长度ml=0. - 申请一个栈,考虑第i位字符c - 如果c为’(‘,将i压栈 - 如果c为’)’,显然它应该与栈顶元素位置上的’(‘匹配,那么: - 此时如果栈为空,说明没有与之相匹配的’(‘,记start=i原创 2016-05-04 11:15:09 · 503 阅读 · 0 评论 -
分析链表翻转
链表翻转分两部分,链表整表翻转和链表部分翻转。下面讨论非递归的做法,递归的做法以后有空再说。。。先说链表整表翻转,核心四句话: next = p.next; p.next = pre; pre = p; p = next;顾名思义,pre是p前面的节点,next是p后面的原创 2016-05-04 00:41:41 · 316 阅读 · 0 评论