c++
文章平均质量分 64
bison2008
这个作者很懒,什么都没留下…
展开
-
链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
常见的三指针方法struct node { int data; node * next;};node* inverseList(node *head){ if(head==NULL||head->next==NULL) return head; node *pre = NULL; node *cur = head; node *next =NULL; while(cur&原创 2011-10-26 19:39:34 · 1239 阅读 · 0 评论 -
字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小
char* moveStar(char *s){ if(!s) return NULL; int len = strlen(s); int starCount = 0; for(int i=len-1;i>=0;--i){ if(s[i]=='*'){ ++starCount; }else if(starCount>0){ s[i+starCount] = s[i];原创 2011-10-26 19:41:23 · 1021 阅读 · 1 评论 -
删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
int deleteBlank(char* s){ if(s==NULL) return -1; int len = strlen(s); //删除字符串结尾的空白符 int i = len; while(s[--i]==' '); s[i+1] = '\0'; len = i; //删除字符串开始以及中间的空白符 i=0; int offset = 0; while(原创 2011-10-26 19:34:43 · 1202 阅读 · 0 评论 -
有1,2,3,...,n,n<=9,这n个数全排列,从小到大排好,计算第k个数是什么
从高位到低位依次选择int findKthNumber(int n,long k){ if(n9||k<1) return -1; if(n==1){ if(k==1){ cout<<"1"<<endl; return 0; }else{ return -1; } } long *counts = new long[n]; bool *select原创 2011-11-08 14:59:06 · 1308 阅读 · 0 评论 -
从一个字符串中删除另一个字符串中出现的字符
int deleteChars(char *first, char *second){ if(!first||!second) return -1; bool hashTable[256]; memset(hashTable,0,sizeof(hashTable)*sizeof(bool)); for (int i=0;i<strlen(second);++i) { hash原创 2011-11-08 14:02:31 · 1113 阅读 · 0 评论 -
有一堆硬币,面值分别为2、3、5、7,判断是否能平均分成两堆,如果能分,该怎么分?
很笨的穷举法//coins:2,3,5,7的个数,partition:分法bool partitionCoin(int coins[],int partition[]){ int totalMoney = 2*coins[0]+3*coins[1]+5*coins[2]+7*coins[3]; if(totalMoney%2) return false; int eachMoney =原创 2011-11-09 10:49:01 · 812 阅读 · 0 评论 -
2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
struct TreeNode { int key; TreeNode *left; TreeNode *right;};bool isSubTree(TreeNode *A, TreeNode *B){ if(!A&&!B) return true; if(!A||!B) return false; if(A->key == B->key){ return isSubTre原创 2011-11-11 09:24:20 · 493 阅读 · 0 评论 -
一道特殊要求的字符串比较笔试题
//设计一个strmncmp函数,对比普通的strcmp,原则在于,当字符串中含有数字时,以数字大小为标准,对于其中只有一个字符串为数字的情况,//仍然使用原来的原则,举例说strmncmp的判定结果,”abc”//一般的strcmp的判定结果:”abc”//要求:请给出完整代码,在达到目标的情况下尽量搞笑,简洁。int strmncmp(char* s1, char* s2)原创 2011-11-11 11:45:06 · 623 阅读 · 0 评论 -
二维数组回形遍历
如图所示,打印遍历后的结果。策略:由外到内,一圈圈的打印,直到没有元素输出。#include using namespace std;int print_array_round(int **a, int row_start,int row_end, int col_start, int col_end) { int count = 0; //本次打印的元素个数 // 右原创 2013-06-05 13:13:37 · 2520 阅读 · 0 评论