兩個面試題

2021-06-25 13:48:19 字數 1288 閱讀 5872

1. 實現乙個lite版的字串替換函式

c/c++:

char *strreplace(char *str, const char *sub,const char *rep)

限制條件和要求如下:

1.其中str為原字串,sub為待被替換的子串。為簡單起見, 假定字串sub和rep長度一樣

2.直接對原字串str進行修改並返回, 不得使用malloc/new開闢新的記憶體空間

3.不得使用任何庫函式/api, 包括但不限於strlen, strstr, strcpy, 如需使用類似功能, 請自行實現

#include #include using namespace std;

//此函式支援原字串中有多個子串的情況,將分別替換

//多個子字串重疊將處理為替換後跳過已替換部分,如aaabcd, aa, xx執行結果為xxabcd而不是***bcd

char *strreplace(char *str, const char *sub, const char *rep)

if (*(sub + i) == '\0')

else str++;

} return ret;

}int main()

2. 假設有兩個單鏈表a和b,不帶頭節點,且長度一樣,示例如下:

a:1->2->3->4

b:a->b->c->d

請逆轉交替合併兩個鍊錶,示例結果如下:

4->d->3->c->2->b->1->a

c/c++:

節點型別定義如下:

structnode ;

//c/c++實現

node *reverse_merge(node *a, node *b)

node *a1 = a->next;

node *b1 = b->next;

node *b2 = b1->next;

b->next = 0;

while (a1 != null)

a->next = b;

return a;

}node *buildlist(node *a, char c)

int main()

*/ node *c = reverse_merge(a, b);

while (c != null)

cout << endl;

system("pause");

return 0;

}

兩個簡單的面試題

分享兩個簡單的面試題,好吧,求質數的那個面試題居然沒做出來。要好好打基礎 public class study0812 獲取arr陣列中最大的數的索引,該索引加97就是字元中重複最多的字元 int maxindex 0 for int i 0 i arr.length 1 i return char...

面試題 兩個佇列實現棧

兩個佇列實現棧 前提已知 typedef struct queue queue void initqueue queue q void enqueue queue q,int key int dequeue queue q int sizeofqueue queue q int isqueueemp...

面試題 交換兩個變數的值

面試題 交換兩個變數 也許當你聽到這道題的時候會暗暗的發笑,這麼簡單的演算法題竟然拿出來作為面試題考,是不是也在懷疑這家公司的本身的能力與規模了呢。交換兩個變數 例如num1 5,num2 6 num1 6,num 5 怎麼樣是不是覺得灰常簡單,你是不是用下面的方法做的 int num1 5 int...