- 博客(11)
- 收藏
- 关注
原创 求最长回文子串中心扩散法、Manacher、动态规划
关于求解最长回文子串问题前言一、中心扩散法?二、动态规划法三、Manacher求回文子串总结前言求一个字符串中的最长回文子串问题,有很多方法。我弄懂了三种,在这里和大家分享一、中心扩散法?中心扩散法是一个解决回文子串非常好用的方法。该方法的思想是将字符串从某个位置向左右扩散,只要左右对称位置的字符相同就可以一直扩散,知道不同停止,从左至右,扩散的下标之差就是该位置能得到的最大回文子串。举个例子:如图所示,称这个字符串为arr,从下标为3的6字符向左右扩散,arr[2]==arr[4],ar
2021-07-24 21:31:26 433
原创 计算表达式结果附JAVA代码
计算表达式结果前言一、运算符中无括号时的运算过程?二、增加多个括号后的计算过程总结前言计算表达式结果的问题一直是困扰我很久的问题,前段时间无意间看到了一种使用递归解决这类问题的方法,想和大家分享。在了解这个方法前大家可以先忘记脑海中繁杂的各种运算符优先级并建优先级表的套路,尝试接受这个方法。一、运算符中无括号时的运算过程?假设我们有一个运算符“2*3-6/2”,这个字符串如何求解呢?首先我们设计一个双端链表进行过程数据的存取。遍历这个表达式字符串,首次遇到数字2,我们将他存入临时变量pr
2021-07-21 20:11:25 1062
原创 一个字符串str分割成k个子串,字串要全部是回文数,需要改变的字符个数
一个字符串str分割成k个子串,字串要全部是回文数,需要改变的字符个数例如,字符串 abcbf分割成3个字串 可以分割成a,bcb,f这样不需要改变字符就可以实现。又例如字符串 abfa分割成3个字串 可以分割成ab,f,a需要改变1个字符,变成aa,f,a 就可以实现。这就是这道题的意思。首先我们采用一种傻瓜式的方式来解决这个问题(这里仅仅以k=3为例)我们的想法是先将所有可以分割的结果列举出来,再分别计算每种分割方法下的改变字符串的个数,求最小值即为解。例如我们提到的字符串 “abcbf”
2021-07-09 22:20:27 530
原创 求两个数的最大公因数与最小公倍数
如果计算两个数的最大公因数和最小公倍数?此处我主要介绍辗转相除法求解最大公因数与最小公倍数首先我们需要知道辗转相除法的思想:对于两个数字a和b有式子(a>b):a=b*q+r那么a和b的最大公因数就是b和r的最大公因数。下面简单证明一下充分性:假设d是a和b的最大共因数那么一定有:a=dx1(1)b=dx2(2)由于a=bq+r 那么r=a-bq将(1)(2)代入则该式子变成:r=dx1-dx2q = d(x1-qx2)这样可与看出来r可以整除d,由于已知b可以整除d即{r=
2021-02-07 20:40:28 1259
原创 关于上楼梯问题(斐波那契数列应用)
问题1:楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上两阶,编写算法计算共有多少种不同的上楼梯的方法。为什么说上楼梯问题是斐波那契数列的应用呢?我们可以先列举n比较小的时候。n=1:只有 {1} 一种(1)n=2:可以有 {1 1} 和2 两种(2)n=3:可以有 {1 2} 和 {2 1} 和{1 1 1} 三种(3)n=4:可以有{2 2} 和{1 1 2} 和{1 2 1} 和{2 1 1}和 {1 1 1 1} 五种(5)…而斐波那契数列(Fibonacci sequence),
2021-02-07 18:14:47 5893 3
原创 使用栈实现队列
上一篇和大家讨论了如何使用队列实现栈队列实现栈栈:先进后出队列:先进先出那么如何使用栈数据结构实现队列呢我们定义两个栈分别命名为push栈和pop栈示意图如下:将数字1 2 3 依次加入,如果直接弹出push栈内容则是数字3,与我们预想的队列先进先出弹出数字1不符。我们push操作时直接加入push栈即可,pop时需要从pop栈中取元素。若pop栈为空则将push栈中的所有元素都加入pop栈中,再弹出pop的栈顶;若此时push栈也为空则pop操作失败。数字加入pop栈后将pop栈顶弹
2021-02-02 20:30:36 110
原创 如何使用队列来实现栈
栈:先进后出队列:先进先出那么如何使用队列数据结构实现栈呢![先准备两个队列,我们将他们分别称之为help队列与data队列](https://img-blog.csdnimg.cn/20210202184544639.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MzIwMDQ2,size_16,color_FFFFFF,t_7
2021-02-02 19:36:44 857 2
原创 删除线性表中所有值为x的数组元素
删除线性表中所有值为x的数组元素。比如一串数字值为 1,2,3,2,4,5,2,6,2删除值为2的元素这个问题并不难但烦人的是要进行数据的覆盖!那么如果对从前往后的每个值为x的数进行覆盖事情就会变成这样:1 2 3 2 4 5 2 6 21 3 2 4 5 2 6 21 3 4 5 2 6 21 3 4 5 6 21 3 4 5 6这样的话这个简单的数组都需要遍历5次并进行很...
2019-10-04 11:18:50 2257
原创 哥拉斯三元组
毕达哥拉斯三元组是三个自然数a < b < c组成的集合,并满足a2 + b2 = c2例如,32 + 42 = 9 + 16 = 25 = 52。有且只有一个毕达哥拉斯三元组满足 a + b + c = 1000。求这个三元组的乘积abc首先我们分析一下(我们不只局限于可以满足1000 而使可以满足任何数num)a+b+c=num假设a=b=c那么a能取到的最大即为num/...
2019-07-22 17:15:35 523
原创 最小的能够被1到20整除的数
2520是最小的能够被1到10整除的数。最小的能够被1到20整除的正数是多少?这个题相当于是求1-20的最小公倍数,我们可以首先考虑如何求解三个数的最小公倍数。比如4,5,6的最小公倍数我们首先求4,5的最小公倍数即为20,我们再求解20和6的最小公倍数,由于最小公倍数=两数相乘/两数最大公因数。则20和6的最小公倍数为20*6/2=60则此题相当于求解20个数的最小公倍数,那么使用一个循环...
2019-07-15 13:45:16 2020
原创 最大质因数
omg第一次尝试写博客,小白一枚,希望大家多多指教!13195的所有质因数为5、7、13和29。600851475143最大的质因数是多少?质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。最大质因数又是什么意思呢? 每个合数都可以写成几个质数(也可称为素数)相乘的形式,这几个质数就就叫做这个合数的质...
2019-07-15 12:17:38 4981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人