ldjhust

工欲善其事 必先利其器

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年5月3日

摘要: 题目:输入一个字符串,输出其所有的排列组合。思路:分别将每一个字符固定在首位置,然后求后面字符的排列组合,递归的思想。代码如下:1 void Permutation(char *Str)2 {3 assert (Str != NULL);4 5 Permutation (Str, Str);6 } 1 void Permutation(char *Str, char *pTemp) 2 { 3 assert (Str != NULL); 4 5 assert (pTemp != NULL); 6 7 if (*pTemp == '\0') 8 ... 阅读全文
posted @ 2013-05-03 14:03 ldjhust 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 题目:合并两个单向有序链便,保证合并之后的链表依然是有序的。例如:1->3->5和2->4->8合并完之后:1->2->3->4->5->8思路:运用递归,很简洁。代码如下: 1 ListNode *CombineList(ListNode *List1, ListNode *List2) 2 { 3 if (NULL == List1) 4 { 5 return (List2); 6 } 7 8 if (NULL == List2) 9 {10 return (List1);11 }12 13 List... 阅读全文
posted @ 2013-05-03 13:25 ldjhust 阅读(308) 评论(1) 推荐(1) 编辑

摘要: 在字符串中找出连续最长的数字串,例如:abcd12345ed125ss123456789, 输出123456789。思路:利用一个数组记录各个数字字串的长度。代码如下: 1 void LongestSubNumberString(const char *Str) 2 { 3 assert (Str != NULL); 4 5 int nLength = strlen (Str); 6 7 if (0 == nLength) 8 { 9 printf ("空字符串!\n");10 return;11 }12 13 ... 阅读全文
posted @ 2013-05-03 12:00 ldjhust 阅读(413) 评论(0) 推荐(0) 编辑

摘要: 题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。比如输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列。思路:建立一个栈,若栈不为空,检查栈顶元素是否与pop序列将要弹出的元素相同,若相同则弹出栈顶元素,若不同,则检查push序列,将push序列中将与pop序列将要弹出元素不同的全部压入栈,直到找到相同的,若在push剩下的元素中找不到与pop序列将要弹出的元素相同的元素,则这个pop序列不可能是push序列的一个弹出序列,循环下去 阅读全文
posted @ 2013-05-03 11:22 ldjhust 阅读(246) 评论(0) 推荐(0) 编辑