程式設計師面試寶典 第乙個空字元前邊的長度

2021-08-15 05:56:11 字數 720 閱讀 8968

題目:遞迴函式mystrlen(char *buf, int n)是用來實現統計字串中第乙個空字元前面字元長度。

舉例來說:

char

str = ;

字串buf, 當輸入n=10或者20, 期待輸出結果是6; 當輸入n=3或5, 期待輸出結果是3或5。

直接迴圈遍歷,使用乙個變數記錄遍歷過的字元個數,直到遇到空字元為止。

時間複雜度為o(n)。

遞迴思路,我們首先要進行分治。

最簡單的分治就是二分法,前後進行劃分。

比較前半部分空字串前邊的字元長度,

如果這個長度小於n/2,則直接返回這個結果

如果這個長度不小於n/2(等於),則累計當前的長度+後半部分的空字串前邊的長度。

同時需要找到遞迴的終止條件。

終止條件是首字母開頭是』\0』字元,n是0的情況和n是1的情況。

int my_strlen(char* buf, int n)     //此處n為輸入長度,不是字串實際長度  

else

if (n == 1)

//折半查詢,此處取得的t代表n/2中是否有字串的實際長度,

//如果字串的實際長度是大於等於n/2的則需要繼續遞迴,如果小於n/2則可直接返回

if (t < n / 2)

else

}

程式設計師面試寶典一

1 int i i 首先宣告乙個變數i,然後將變數i的值 未初始化 賦值給自己 2 下面 的意義 void func int x,int count 求乙個整數轉換為二進位制之後包含多少個1 3 printf在vc6.0下是自右向左運算的 好像跟編譯器有關 int arr int ptr arr p...

《程式設計師面試寶典》中的乙個錯誤

發現寶典中乙個錯誤,題目如下 判斷下面函式的輸出 1 void main 2解答 輸出的結果是000000f7,fffffff7。變數i的輸出是沒有疑問的,unsigned int到unsigned char直接截斷,取低位元組。對於變數b,在第5行中,書中解釋是這一行等價於 unsigned in...

程式設計師面試寶典 實現乙個集合棧

解析 剛開始沒有反應過來題目是什麼意思,仔細讀了讀才梳理出來 輸入的引數中ope是乙個二維vector陣列,其中第二維度 也就是列 被限制為只有兩個元素。例如ope 2 0 和ope 2 1 當ope 2 0 1時,表示要入棧,ope 2 1 的值就是要插入的值。當ope2 0 2時,表示要出棧,此...