数据结构与算法
碧海凌云
从平凡到神奇
展开
-
重复子串问题(二):求一个字符串中连续出现次数最多的子字符串
问题:求一个字符串中连续出现的次数最多的子串。例如字符串“abababc”,最多连续出现的为ab,连续出现三次。 要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。 两个题目的解法有些类似,都用到了后缀数组这个数据结构。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为: abababc bababc ababc babc原创 2015-08-09 14:55:12 · 3174 阅读 · 0 评论 -
大数运算(四)——大数相乘
大数相乘给定任意长度的数字,数字长度从1到1000位,求两个数字的乘积。可以用字符串来保存超长数字。解题思路:利用乘法公式,将被乘数与乘数的每一位相乘,在乘完一位数后,要注意移位,即在被乘数后面补零。然后将被乘数与乘数每一位相乘的结果相加。原创 2015-09-15 22:28:34 · 566 阅读 · 0 评论 -
二叉树问题总结(二)
二叉树问题原创 2015-10-13 09:34:24 · 433 阅读 · 0 评论 -
链表问题(二)——有序链表合并
有序链表合并已知两个链表head1和head2个字有序,请把他们合并成一个链表依然有序(包含所有结点,即便大小相同)原创 2015-09-25 11:27:21 · 925 阅读 · 1 评论 -
华为机试——求数组中的第一大和第二大数
题目:求一个数组中的第一大和第二大数#include<iostream>using namespace std;void count(int a[],int n){ int FirstMax=0xFFFFFFFF,SecMax=0xFFFFFFFF; int k; for(int i=0;i<n;i++) { if(a[i]>FirstMax)原创 2016-01-08 14:58:53 · 949 阅读 · 0 评论 -
链表逆序
链表逆序原创 2016-01-08 15:03:43 · 359 阅读 · 0 评论 -
贪心算法(一)
题目描述:题目描述你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐输入描述一行30个正整数,用空格隔开,表示每个物品的体积输出描述一个数字,为最多能装下的物品数#include<iostream>#include<algorithm>using namespace std;int object[30];int main(){ for(int原创 2016-01-11 16:40:41 · 440 阅读 · 0 评论 -
最长回文子串
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<ctype.h>using namespace std;const int MAXN=5000+10;char buf[MAXN],s[MAXN];/*int main(){ int n,m=0,max=0; int原创 2016-01-11 16:51:14 · 268 阅读 · 0 评论 -
二叉树问题总结(三)
问题11:求二叉树的镜像 递归解法: (1)如果二叉树为空,返回空 (2)如果二叉树非空,分别求左子树和右子树的镜像,然后交换左右子树BinaryTreeNode* Mirror(BinaryTreeNode* pRoot){ if(pRoot==NULL) return NULL; BinaryTreeNode* pLeft=Mirror(pRoo原创 2016-10-05 19:20:11 · 424 阅读 · 0 评论 -
大数运算(一)——超大整数相加
给定两个超大整数,求它们的和,整数的位数为1到1000位原创 2015-09-14 16:22:46 · 1974 阅读 · 0 评论 -
大数运算(二)——大数相减
大数相减输入两行字符串整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。备注:1.两个整数都是正整数,被减数大于减数 示例: 输入:100000000001 1 输出:100000000000#include<iostream>原创 2015-09-14 17:28:50 · 2231 阅读 · 0 评论 -
重复子串问题(三):输出一个字符串中出现频率最高的子串
要求子串长度大于2,且子串可以出现在任意位置//输出一个字符串中出现频率最高的子字符串(要求子串长度大于等于2)#include<iostream>#include<string>#include<map>#include<utility>using namespace std;//pair<string,int> fun(string s)int main(){ int ma原创 2015-08-09 15:04:57 · 1786 阅读 · 0 评论 -
字符串移位包含的问题
//字符串移位包含的问题/*给定两个字符串s1和s2,要求判断s2是否能够被s1做循环移位得到的字符串包含,例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false*/在做这道题的时候我发现了一个很容易出错,但是去不容易找到原因。主要原因是我们对于全变量初始化位置错误,导致对于多次输入字符串判断的情况,如果前面的返回值位tru原创 2015-07-27 09:53:44 · 961 阅读 · 0 评论 -
重复子串问题(四):求两个字符串的最长公共字串
方法一:利用容器:将两个字符串中较短的字符串进行分解,分解为不同长度的子串,并保存在set 容器中,这样既可取出相同子串,同时也可以将子串排序,方便查找。利用string类自带的find函数查找重复子串。#include<iostream>方法二:利用后缀数组:原创 2015-08-09 17:10:07 · 853 阅读 · 0 评论 -
重复子串问题(一):寻找最长重复子串
问题描述给定一个文本文件作为输入,查找其中最长的重复子字符串。例如,"Ask not what your country can do for you, but what you can do for your country"中最长的重复字符串是“can do for you”。原创 2015-08-09 14:25:35 · 1114 阅读 · 0 评论 -
重复子串问题(五):求最长回文字符子串
字符串应用--密码截获求最长回文子串原创 2015-08-09 19:19:17 · 419 阅读 · 0 评论 -
寻找有环链表的环路开头结点
问题:给定一个有环链表,实现一个算法返回环路的开头结点一、检查一个链表是否存在环路原创 2015-08-21 17:01:54 · 1083 阅读 · 1 评论 -
二叉查找各类情况总结
1. 给定一个有序(不降序)数组arr,求最大的i使得arr[i]等于v,不存在则返回-1原创 2015-08-21 15:14:47 · 371 阅读 · 0 评论 -
排序算法总结
所有排序算法总结冒泡排序,选择排序,简单插入排序,归并排序,shell排序,快速排序,堆排序原创 2015-08-11 19:28:50 · 425 阅读 · 0 评论 -
python中的is、==和cmp()比较字符串
python 中的is、==和cmp(),比较字符串经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子地。所以作为慢慢要转换到用 Python 写脚本,这些基本的东西必须要掌握到骨子里!在 Python 中比较字符串最好是使用简单逻辑操作符。例如,确定一个字符串是否和另外一个字符串匹配。正确的,你可以使用 is equal转载 2017-04-22 14:17:05 · 45165 阅读 · 0 评论