當(dāng)前位置:
首頁(yè) >
剑指offer 算法(数组 字符串)
發(fā)布時(shí)間:2025/10/17
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
剑指offer 算法(数组 字符串)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過(guò)替換之后的字符串為We%20Are%20Happy。
補(bǔ)充:坑爹的題目也不指明length是原str串最大長(zhǎng)度~~還有,有點(diǎn)疑惑,我的這種辦法當(dāng)遇到連續(xù)兩個(gè)空格是能成功替換,但最后會(huì)報(bào)錯(cuò),why?why?why?在VC++6.0會(huì)出問(wèn)題,codeblocks就沒(méi)問(wèn)題。。。string庫(kù)的問(wèn)題嗎,因?yàn)閏odeblocks用的是cstring~~~看別人的辦法,都是先數(shù)空格個(gè)數(shù),再補(bǔ)充str長(zhǎng)度,之后從后往前復(fù)制,當(dāng)遇到空格就用“%20”替換,直到串首
在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
解析:解題思路:從二維數(shù)組的右上角的元素開(kāi)始判斷,因?yàn)榇嗽厥撬谛械淖畲髷?shù),是它所在的列的最小數(shù)。如果它等于要查找的數(shù)字,則查找過(guò)程結(jié)束。如果它大于要查找的數(shù)字,則可以排除它所在的列。如果它小于要查找的數(shù)字,則可排除它所在的行。這樣如果要查找的數(shù)字不在數(shù)組的右上角,則每次判斷都可以排除一行或一列以縮小查找范圍,直到找到要查找的數(shù)字,或者查找范圍為空。
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;//}} };題目描述請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過(guò)替換之后的字符串為We%20Are%20Happy。
解析:逐個(gè)判斷,當(dāng)存在空格,截?cái)嘧址?#xff0c;分為空格前和空格后,之后連接“空格前串”+“%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;} };補(bǔ)充:坑爹的題目也不指明length是原str串最大長(zhǎng)度~~還有,有點(diǎn)疑惑,我的這種辦法當(dāng)遇到連續(xù)兩個(gè)空格是能成功替換,但最后會(huì)報(bào)錯(cuò),why?why?why?在VC++6.0會(huì)出問(wèn)題,codeblocks就沒(méi)問(wèn)題。。。string庫(kù)的問(wèn)題嗎,因?yàn)閏odeblocks用的是cstring~~~看別人的辦法,都是先數(shù)空格個(gè)數(shù),再補(bǔ)充str長(zhǎng)度,之后從后往前復(fù)制,當(dāng)遇到空格就用“%20”替換,直到串首
總結(jié)
以上是生活随笔為你收集整理的剑指offer 算法(数组 字符串)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剑指offer 算法 (递归与循环)
- 下一篇: 剑指offer 算法(链表 树)