当前位置:
首页 >
剑指offer 算法(数组 字符串)
发布时间:2025/10/17
42
豆豆
生活随笔
收集整理的这篇文章主要介绍了
剑指offer 算法(数组 字符串)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
补充:坑爹的题目也不指明length是原str串最大长度~~还有,有点疑惑,我的这种办法当遇到连续两个空格是能成功替换,但最后会报错,why?why?why?在VC++6.0会出问题,codeblocks就没问题。。。string库的问题吗,因为codeblocks用的是cstring~~~看别人的办法,都是先数空格个数,再补充str长度,之后从后往前复制,当遇到空格就用“%20”替换,直到串首
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解析:解题思路:从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可以排除它所在的列。如果它小于要查找的数字,则可排除它所在的行。这样如果要查找的数字不在数组的右上角,则每次判断都可以排除一行或一列以缩小查找范围,直到找到要查找的数字,或者查找范围为空。
class Solution { public:bool Find(vector<vector<int> > array,int target) {if(array.empty())return false;int row=array.size();int col=array[0].size();int i=0,j=0;//if(target<array[0][0]||target>array[row-1][col-1])// return false;//else//{i=0;j=col-1;while(i<row&&j>=0){if(array[i][j]==target)return true;else if(target<array[i][j]){j--;}else{i++;}}return false;//}} };题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解析:逐个判断,当存在空格,截断字符串,分为空格前和空格后,之后连接“空格前串”+“%20”+“空格后串”,赋予原串。
class Solution { public:void replaceSpace(char *str,int length) {int length1=strlen(str);char space[]=" ";char cat[]="%20";char *temp;int length2;char final[256];while(strstr(str,space)!=NULL){temp=strstr(str,space);length2=strlen(temp);memcpy(&final,str,(length1-length2));final[(length1-length2)]='\0';strcat(final,cat);strcpy(temp,(temp+1));temp[length2]='\0';strcat(final,temp);strcpy(str,final);length1=length1+2;;}//cout<<str<<endl;} };补充:坑爹的题目也不指明length是原str串最大长度~~还有,有点疑惑,我的这种办法当遇到连续两个空格是能成功替换,但最后会报错,why?why?why?在VC++6.0会出问题,codeblocks就没问题。。。string库的问题吗,因为codeblocks用的是cstring~~~看别人的办法,都是先数空格个数,再补充str长度,之后从后往前复制,当遇到空格就用“%20”替换,直到串首
总结
以上是生活随笔为你收集整理的剑指offer 算法(数组 字符串)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 剑指offer 算法 (递归与循环)
- 下一篇: 剑指offer 算法(链表 树)