一个算法的实现

简介:

某同学帮国外某MM做的题。

算法描述:

首先将两个字符串和一个临界值作为参数传入函数,比如"aaaaaaaaaa","bbaaababaa",2,然后在函数中依次比较两个字符串的每个字符,当不同的字符数超过指定的临界值后,继续比较,并将大于等于临界值且最大数目的第一个字符串中的相同字符转换为大写,比如,根据以上输入,那么输出为:aaAAAaaaAA。要求:只能用if,else,递归及字符串处理的相关函数。

欢迎各种拍砖。

 
  1. //Code By Pnig0s1992  
  2. //Date:2012,3,13  
  3. #include <stdio.h>  
  4. #include <Windows.h>  
  5. #include <string.h>  
  6. #include <stdlib.h>  
  7.  
  8. #define MAXSIZE 20  
  9.  
  10. int SuperStr(CHAR lpFirst[],CHAR lpLast[],int iCheck);  
  11.  
  12. int main(int argc,char * argv[])  
  13. {  
  14.     CHAR lpFirst[] = "aaaaaaaaaa";  
  15.     CHAR lpSecond[] = "bbaaababaa";  
  16.     int iCheck = 2;  
  17.     SuperStr(lpFirst,lpSecond,iCheck);  
  18.     printf("\n修改后的第一条字符串:%s",lpFirst);  
  19.     system("pause");  
  20.     return 0;  
  21. }  
  22.  
  23. int SuperStr(CHAR lpFirst[],CHAR lpLast[],int iCheck)  
  24. {  
  25.     CHAR cTempF = *lpFirst;  
  26.     CHAR cTempL = *lpLast;  
  27.     int iTempMark;  
  28.     static CHAR cSave;  
  29.     static LPSTR lpTempStr = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,20);  
  30.     static int iCount = 0;  
  31.     int iReturn = 0;  
  32.     if(cTempF == '\0' || cTempL == '\0')  
  33.     {  
  34.         return 0;  
  35.     }  
  36.     int iSame = SuperStr(++lpFirst,++lpLast,iCheck);  
  37.       
  38.     if(cTempF == cTempL)  
  39.     {  
  40.         cTempF-=32;  
  41.         cSave = cTempF;  
  42.         iCount++;  
  43.         iReturn =  1;  
  44.     }else 
  45.     {  
  46.         if(iCount<iCheck)  
  47.             iCount =0;  
  48.     }  
  49.  
  50.     if(iCount >=iCheck)  
  51.     {  
  52.         if(iCount == 1)  
  53.         {  
  54.             strnset(lpFirst-1,cTempF,iCount);  
  55.             iCount = 0;  
  56.             return 0;  
  57.         }else 
  58.         {  
  59.             if(iSame == 0)  
  60.             {  
  61.                 strnset(lpFirst+1,cSave,iCount);  
  62.                 iCount = 0;  
  63.             }  
  64.         }  
  65.     }  
  66.     return iReturn;  

 
















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/805284,如需转载请自行联系原作者

相关文章
|
存储 算法
将数组a中数据元素实现就地逆置的算法
给出将整型数组a中数据元素实现就地逆置的算法。所谓就地逆置,就是利用数组a原有空间来存放数组a中逆序排放后的各个数据元素。
259 0
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
276 1
|
算法 前端开发 JavaScript
【前端算法】用JS实现快速排序
理解数组方法里面运用到的算法,splice 和 slice的区别
113 0
|
JavaScript 前端开发 算法
【前端算法】javaScript实现二分查找
如何使用JS实现一个合格的二分查找
191 0
|
存储 算法 前端开发
【前端算法】链表和数组实现队列的区别
比较链表和数组实现队列的性能
161 0
|
算法 前端开发 测试技术
【前端算法】两个栈实现一个队列
介绍栈和队列的区别,以及如何使用栈实现一个队列
116 0
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
132 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
|
算法 计算机视觉 C++
Kalman算法C++实现代码(编译运行通过)
Kalman算法C++实现代码(编译运行通过)
167 0
一则有趣的算法题:两个栈实现一个队列
一则有趣的算法题:两个栈实现一个队列
|
算法 C++
C++ 实现KMP字符串匹配算法
C++ 实现KMP字符串匹配算法