摘要: 使用“”来防止单词分割。如果在参数列表中使用双引号,将使得双引号中的参数作为一个参数。即使双引号中的字符串包含多个单词(即有保护空白部分)也不会变成多个参数。var="a b c"COMMAND This is $varCOMMAND将以5个参数来执行 :"This" "is" "a" "b" "c"COMMAND "This is $var" 则参数变为一个:"This is a b c"转义(\)\n 新的一行\r 回车\t tab 阅读全文
posted @ 2013-03-07 21:55 没离开过 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 变量赋值虽然简单但也有很多需要注意的地方下面是一下我从书中整理出的注意点:1. 一定不要在赋值前后有空格VARIABLE =value 脚本将尝试运行一个“VARIABLE"的命令带着一个“=value"参数VARIABLE= value 脚本将尝试运行一个“value"的命令,带着一个被赋值成“”值的环境变量“VARIABLE".2.有无引用的区别hello="AB C D"echo $hello 输出ABCDecho “$hello“ 输出AB C Decho '$hello' 输出$hello引用一个变量讲保留其 阅读全文
posted @ 2013-03-07 21:34 没离开过 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 在字符串中找出第一只出现一次的字符,如输入“abaccdeff“,则输出b。在这里讲解利用哈希表来解决的方法。因为题目简单所有这里的哈希表可以是用ASCII码为键值的数组。下面是代码:char FirstNotRepeatingChar(char* pString){ if( pString == NULL) return '\0'; const int tableSize = 256; unsigned int hashTable[tableSize]; //初始化哈希表 for(int i=0; i < tableSize ;++i ... 阅读全文
posted @ 2013-03-07 21:01 没离开过 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 我们把只包含因子2,3和5的数称为丑数。求按从小到大的顺序的第1500个丑数。这里讲解一种用空间换时间的解法。int Min(int number1, int number2, int number3){ int min = (number1 < number2) ? number1 : number2; min = (min < number3) ? min: number3; return min;}int GetUglyNumber(int index){ if(index <=0) return 0; int *pUglyNumbers = ... 阅读全文
posted @ 2013-03-07 20:48 没离开过 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 输入一个整形数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。这题的思想是我们可以从第一个数开始往后加,每加一次前判断当前所有数的和是否为负数,如果是负数则舍弃前面所加,把值赋值为当前值,如果不是负数则直接加上当前值。代码如下:bool g_InvalidInput = false;int FindGreatestSumOfSubArray(int* pData, int length){ if( pData == NULL || length <=0 ) { g_InvalidInput =tr... 阅读全文
posted @ 2013-03-07 20:31 没离开过 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 输入N个整数,找出其中最小的K个数;这里讲解O(nlogk)的算法,特别适合处理海量数据。我们先创建大小为K的数据容量来存储最小的K个数字,接着我们每次从输入的n个整数中读入一个数。如果容器中已有的数字少于K个,就直接把这次读入的数放入容器中,如果容器中已经有K个数字,那么我们找出这K个数中的最大值与这次读入的数字最比较,如果这次读入的数字比最大值小则替换。从前面分析中我们可以想到这个容器的数据结构最好是个最大堆,我们可以使用STL中的set 和multiset来实现。下面是代码:typedef multiset<int,greater<int> > intSet;ty 阅读全文
posted @ 2013-03-07 13:49 没离开过 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字:这里讲解一个从数组特点找出O(n)的算法。数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他的所有数字出现次数的和还要多。根据这个特点我们得到下面代码:bool CheckMoreThanHalf(int * numbers, int length,int number){ int times =0; for(int i=0; i<length; ++i) { if( numbers[i] == number) times++; } bool i... 阅读全文
posted @ 2013-03-07 13:27 没离开过 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的节点,只能调整树中节点指针的指向。由于要求转换后的链表是排好序的,我们可以用中序遍历树的每一个节点。下面是代码:struct BinaryTreeNode{ int value; BinaryTreeNode* p_left; BinaryTreeNode* p_right;};void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** pLastNodeInList){ if( pNode == NULL) return; ... 阅读全文
posted @ 2013-03-07 13:09 没离开过 阅读(109) 评论(0) 推荐(0) 编辑