出题:数值的整数次方(不考虑溢出),实现函数double Power(double base, int exponent);

分析:

  • 解法1:最简单的方法是使用直接的乘法运算,但是注意处理几种特殊情况:exponent为负数,base为0;
  • 解法2:将exponent分解成2的不同次方相加的表达式,通过重复平方来最大程度的减少乘法运算的次数。 当然,也可以递归实现,当n为偶数时,a^n=a^(n/2) * a^(n/2);当n为奇数时,a^n=a^((n-1)/2) * a^((n-1)/2) * a;

解题:

 double power(double base, int exponent) {
if(base== && exponent<) {
printf("when base is 0, exp cannot be negative");
return ;
}
double product=1.0;
if(exponent>) {
for(int i=;i<exponent;i++) {
product*=base;
}
} else {
for(int i=;i>exponent;i--) {
product*=1.0/base;
}
}
return product;
} double power1(double base, int exp) {
if(base == ) return ;
if(exp == ) return ; double product=1.0, temp=1.0;
if(exp>) {
for(int i=exp;i>;i/=) {
if(exp & ==) product*=base;
base*=base;
}
} else {
exp=abs(exp);
for(int i=exp;i>;i/=) {
if(exp & ==) product*=/base;
base*=base;
}
}
return product;
}

出题:输入一个字符串,判断是否有对称的子串,并输出最大的对称子串的长度;

分析:

  • 解法1:由于对称子串的最中间的两个字符相同,所以可以遍历判断两个相邻的字符是否相同,并且分别以两个字符为开始向前和向后拓展对称子串的长度,记录当 前最大的对称子串的长度,知道遍历完字符串。最优的时间复杂度为O(N),最差时间复杂度为O(N^2)。本实现没有考虑中心点对称(中间有一个字符), 仅考虑线对称(中心为两个字符);
  • 解法2:也就是判断回文,翻转拼接原始字符串,然后使用后缀数组可以在O(NlogN)的时间复杂度内完成;

解题:

 int SymmetricString(char *array, int length) {
int left=,right=,max=;
int leftT,rightT,maxT;
while(right<length) {
/**
* 外循环遍历整个字符串
* */
leftT=left;rightT=right;
maxT=;
while(leftT>= && rightT<length) {
/**
* 内循环以当前的left和right为起始
* 分别向左右扩展对称字符串的长度
* */
if(array[leftT]==array[rightT]) {
maxT++;
leftT--;rightT++;
} else
break;
}
/**
* 更新最大对称字符串大小的记录
* */
if(maxT>max) max=maxT;
left++;right++;
}
return *max;
}

最新文章

  1. MongoDB【第二篇】MongoDB逻辑与物理存储结构
  2. Infinite loop when using cookieless session ID on Azure
  3. Android studio快捷键大全 和 eclipse对照(原)
  4. ftp客户端命令使用简记
  5. jquery简单笔记(1) - 基础记录
  6. js中的 !!
  7. redis web 客户端工具 redis-admin
  8. 猜拳 GuessFist
  9. DebugView图文教程
  10. SEO 网站URL优化
  11. ubuntu server配置xmanager
  12. GitHub上可能用到的开源
  13. JqGrid的总结大全【转】
  14. mplayer最全的命令
  15. SPARK 创建新任务
  16. 第一篇博客 ---- 分享关于Maven使用的一些技巧
  17. Node.js基础学习四之注册功能
  18. CRLF Injection漏洞的利用与实例分析
  19. mongodb从入门到精通
  20. 20155325 Exp4 恶意代码分析

热门文章

  1. bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】
  2. bzoj 1180: [CROATIAN2009]OTOCI【LCT】
  3. [Swift]库函数atoi:将字符串内容转换为整数
  4. 比特币搬砖对冲策略Python源码
  5. B Balala Power!
  6. Canny检测理解和Matlab实现
  7. Floyd+限制路径步数(快速幂优化)
  8. 二分查找+数学 HDOJ 4342 History repeat itself
  9. 题解报告:hdu 1075 What Are You Talking About
  10. HDFS执行getDatanodeReport时权限不足的解决办法