编程
薛昭君
每天都在进步
展开
-
编程之法:关于最长回文子串 | Manacher 算法详解
什么是最长回文子串呢?比如字符串:1 2 3 2 1 3 4 3 1 2其回文子串可以表示如下:最大回文子串就是 4 对应的子串,子串长度为 7转化为奇数长度判断回文是要考虑是奇数还是偶数的,为了消除这个考虑,我们在字符串中添加 # 号: abba ——— #a#b#b#a# aba ———– #a#b#a# 这样,只考虑奇数情况就可以了理解 O(n) 的 Manacher’s Algor原创 2016-08-18 19:51:09 · 460 阅读 · 0 评论 -
判断是否出栈的顺序满足入栈顺序-Java
传入两个数组,一个代表入栈顺序,一个代表出站顺序,返回一个boolean值表示这个出栈顺序是否满足入栈顺序。 比如: 传入: 12345 43512 返回: false 按理来说这是一道非常简单的题,但是我还是用了至少半个小时的时候作答,就是因为一边想一边写,这是非常不好的习惯,可能一定要先把所有的思路理清,然后再开始写,至少要先写一个伪代码思路是模拟入栈出栈的过程i原创 2016-09-26 13:59:48 · 2065 阅读 · 0 评论 -
路灯 - java
在做在线编程题的时候,发觉自己的编程能力还是不够,特别是有时候想对了但是却因为一些小bug,有要憋好久,之后也是要不断的提高自己的debug技术,和降低出错率 V先生有一天工作到很晚,回家的时候要穿过一条长l的笔直的街道,这条街道上有n个路灯。假设这条街起点为0,终点为l,第i个路灯坐标为ai。路灯发光能力以正数d来衡量,其中d表示路灯能够照亮的街道上的点与路灯的最远距离,所有路灯发光能力相同。为了原创 2016-09-26 15:15:22 · 1184 阅读 · 0 评论 -
排序 - 冒泡排序
首先想,给你一个无序的数组,让你求其中的一个最大值?我们可以轻松的想到,从头开始对数组两两进行比较,不断的把相对较大往后移动,比如: 3 2 1 4 7 6 5 2 3 1 4 7 6 5 // 2 和 3 比较,2,3 交换 2 1 3 4 7 6 5 // 3 和 1 比较,3,1 交换 2 1 3 4 7 6 5 // 3 和 4 比较,4比3大,4,3原创 2016-10-22 00:02:29 · 444 阅读 · 0 评论 -
求最大公约数-辗转相除法
代码很好写,查了半天不见原理,那我就写一个原理出来:首先贴一下代码,来自百度百科:public static int gcd(int m, int n) { while (true) { if ((m = m % n) == 0) return n; if ((n = n % m) == 0) return m; } }原创 2016-09-30 11:01:22 · 506 阅读 · 0 评论 -
一道Java题
public class Example { String str = new String(“good”); char[] ch = {‘a’,'b’,'c’}; public static void main(String[] args) { Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+”原创 2016-10-31 20:55:12 · 1036 阅读 · 0 评论