出题:数值的整数次方(不考虑溢出),实现函数double Power(double base, int exponent);
分析:
解题:
1 double power(double base, int exponent) { 2 if(base==0 && exponent<0) { 3 printf("when base is 0, exp cannot be negative"); 4 return 0; 5 } 6 double product=1.0; 7 if(exponent>0) { 8 for(int i=0;i<exponent;i++) { 9 product*=base; 10 } 11 } else { 12 for(int i=0;i>exponent;i--) { 13 product*=1.0/base; 14 } 15 } 16 return product; 17 } 18 19 double power1(double base, int exp) { 20 if(base == 0) return 0; 21 if(exp == 0) return 1; 22 23 double product=1.0, temp=1.0; 24 if(exp>0) { 25 for(int i=exp;i>0;i/=2) { 26 if(exp & 1 ==1) product*=base; 27 base*=base; 28 } 29 } else { 30 exp=abs(exp); 31 for(int i=exp;i>0;i/=2) { 32 if(exp & 1 ==1) product*=1/base; 33 base*=base; 34 } 35 } 36 return product; 37 }
出题:输入一个字符串,判断是否有对称的子串,并输出最大的对称子串的长度;
分析:
解题:
1 int SymmetricString(char *array, int length) { 2 int left=0,right=1,max=0; 3 int leftT,rightT,maxT; 4 while(right<length) { 5 /** 6 * 外循环遍历整个字符串 7 * */ 8 leftT=left;rightT=right; 9 maxT=0; 10 while(leftT>=0 && rightT<length) { 11 /** 12 * 内循环以当前的left和right为起始 13 * 分别向左右扩展对称字符串的长度 14 * */ 15 if(array[leftT]==array[rightT]) { 16 maxT++; 17 leftT--;rightT++; 18 } else 19 break; 20 } 21 /** 22 * 更新最大对称字符串大小的记录 23 * */ 24 if(maxT>max) max=maxT; 25 left++;right++; 26 } 27 return 2*max; 28 }
笔试算法题(23):数值整数次方 & 最大对称子串,布布扣,bubuko.com
原文:http://www.cnblogs.com/leo-chen-2014/p/3745010.html