算法系列
文章平均质量分 51
gordon_rawe
追求技术的心不止!
展开
-
匹配两个字符串的最大子串
#!/usr/bin/pythondef getLongest(str_a,str_b): longest = 0 ret = "" for i in range(0,len(str_a)): for j in range(0,len(str_b)): if(str_a[i]==str_b[j]): ast = i+1 bst = j+1 count=1原创 2014-11-10 21:20:35 · 516 阅读 · 0 评论 -
检查一个字符串是否包含beautiful string
abc aabbcc aaabbbccc...之类的字符串被称为原创 2014-11-14 22:36:49 · 420 阅读 · 0 评论 -
求一个字符串的最大连续递增数子串
public class FindLongestAccend { String findLongestAccendSubString(String src){ if(src==null) return null; int len = src.length(); if(len<=1) return src; int longest = 0; String ret = ""原创 2014-11-14 21:41:35 · 1136 阅读 · 0 评论 -
压缩字符串如aaabbbcccc为a3b3c4
public class CompressString { String compress(String src){ StringBuilder ret = new StringBuilder(); int p1 = 0;int count = 0;int len = src.length(); while(p1<len){ if(p1+1 < len && src.char原创 2014-11-14 21:15:45 · 2247 阅读 · 0 评论 -
判断一字符串是不是对称的
int isSymetrical(char* src){ int len = strlen(src); if(src==NULL || len <= 1) return -1; bool ret = 1; for(int i = 0; i < len/2;i++){ if(src[i]!=src[len-i-1]) { ret原创 2014-11-12 13:37:09 · 712 阅读 · 0 评论 -
判断单链表是否有环,若有请找出入口
struct Node{ int data; Node *next;};Node* checkRing(Node* head,bool &ifExist){ if(head==NULL){ ifExist = false; return NULL; } Node* fast = head; Node* slow原创 2014-11-12 09:38:15 · 314 阅读 · 0 评论 -
找出N个数中最小的K个数(最小时间空间复杂度)
public class HeapFindMinK { private int[] r; private int k; HeapFindMinK(int[] r,int k){ this.r = r; this.k = k; } public void findMinK(){ int[] s = new int[k]; for(int i = 0; i < k; i+原创 2014-11-12 22:34:38 · 943 阅读 · 0 评论 -
基本的排序算法(选择、插入、冒泡、希尔、归并、堆、快速)
先定义个数组,然后写好jiao'huan原创 2014-11-12 10:24:57 · 334 阅读 · 0 评论 -
实现拷贝函数char* strcpy(char* dest,const char* src);
char* strcpy(char* dest,const char* src){ if(dest==NULL || src==NULL) return NULL; char* ret = dest; while((*dest++=*src++)!='\0'); return ret;}这里有两个考察,首先是要判断两个指针是否为空,原创 2014-11-12 09:19:21 · 1301 阅读 · 0 评论 -
字符串为*号和26个字母的任意组合把*号都移动到最右侧,把字母移到最右侧并保持相对顺序不变
void adjustString1(char* str){ int len = strlen(str); char* ceil = str+len-1;//找到数组的天花板,注意最后一个字符的'\0',不要写成str+len char* letter = str;//字母指针 char* star = str;//星号指针 while(letter<=ce原创 2014-11-11 21:18:13 · 542 阅读 · 0 评论 -
反转单链表
今天在中金所面试遇到了到简单但是却没重视的题目,结果写的像tuo原创 2014-11-11 16:55:25 · 389 阅读 · 0 评论 -
求一串彩色珠子中包含所有颜色最短的一串长度
最简单的是暴力破解法,两个循环,这肯定被鄙视的,在参考了网上的一些zuo原创 2014-11-11 16:26:09 · 1477 阅读 · 0 评论 -
将一个字符串不使用额外容器向左移动M位
public class MoveLeftM { public static void reverse(StringBuilder string,int st,int end){ int step = (end-st+1)/2; for(int i = 0; i < step;i++){ char t = string.charAt(st+i); string.setCh原创 2014-11-11 20:21:33 · 515 阅读 · 0 评论 -
查找单链表的倒数第k个节点
这道题考察了边界条件,首先得判断链表原创 2014-11-11 19:20:41 · 460 阅读 · 0 评论 -
建树、前序、中序、后序遍历Java版
郁闷,今天笔试竟然连前序中序后序遍历原创 2014-11-11 16:47:23 · 473 阅读 · 0 评论 -
递归求解二叉树的深度
class Node{ public Node() { // TODO Auto-generated constructor stub int data = 0; left = null; right = null; } int data; Node left; Node right; } int getTreeDepth(Node node){原创 2014-11-11 23:27:19 · 452 阅读 · 0 评论 -
找出2N+1个两两配对数中落单那个
对于这个问题,最暴力的求解方法是采用遍历的操作,然后全部进行,以下方法使用了一个辅助类,其原理是一个智能容器,当插入元素的时候判断集合中是否已经有了该元素,没有就添加,有的话就删除,如下#!/usr/bin/pythondef findSingle(ls): con = Container() for i in range(len(ls)):原创 2014-11-10 23:29:13 · 752 阅读 · 0 评论 -
判断两个链表是否相交并且返回第一个交点
在携程面试的一道算法题,主要的考点在于原创 2014-11-10 23:21:50 · 500 阅读 · 0 评论 -
关于Fibonacci数的效率的考虑
很容易就可以得到递推公式的斐波那契数列的递归解法,但是又没有kao'lü原创 2014-11-14 20:26:19 · 367 阅读 · 0 评论