經典演算法面試題目 翻轉乙個C風格的字串(1 2)

2021-09-22 20:39:38 字數 1699 閱讀 2235

題目:

write code to reverse a c-style string. (c-string means that 「abcd」 is represented as five characters, including the null character.)

寫**翻轉乙個c風格的字串。(c風格的意思是」abcd」需要用5個字元來表示,包含末尾的 結束字元)

解答:這道題如果就是要考察你有沒有注意到c風格字串最後的那個結束符,那我覺得還是像書 上寫的那樣,在**中有所體現。**如下:

博主表示對這個第一種方法有點懵逼,有懂的大神麻煩教導一下,o(∩_∩)o謝謝。指標方面,我基本上沒怎麼學~~~

void swap(char &a, char &b)

void reverse1(char *s)

否則的話,可以直接獲取字串的長度,然後從兩頭開始一一交換相應的字元。**如下:

void swap(char &a, char &b)

void reverse2(char *s)

完整**如下:

#include 

#include

using

namespace

std;

void swap(char &a, char &b)

void reverse2(char *s)

void reverse1(char *s)

int main()

我對第一種方法的理解:

#include 

#include

#include

using

namespace

std;

void swap(char &a, char &b)

void reverse2(char *s)

void reverse1(char *s)

--q;

printf("*%d*\n",q);//此時的q為結束符之前的乙個字元

//此時q指向結束,p是指向開頭

while(p < q)//一直交換,直到中間位置

詳細解釋下c風格字串:

c風格的字串是用陣列存放的,一般要以』\0』結束

而c++主要以string類代替,更加高效,且不易出錯

例如:string str = 「123」;就是c++的風格;

char str[4]=」123」;就是c風格

string是c++中的關鍵字,和int,float等等一樣, 在c++中,string 定義的變數可以直接儲存字串。在c語言中是沒有這種直接儲存字串的變數的。

[ ]裡面是4,是因為,c風格的字串,在最後都會預設新增』\0』,所以」123」本質上是1 2 3 『\0』

它其實是佔四個位元組。所以如果你只定義3個儲存空間的話,那』\0』這個字串終止標誌就回被丟棄,那麼以後的應用就回出現問題。舉個例子:你用strlen(str)試試檢視長度為3時的這個字串的長度,很可能就會有問題。 『\0』 是c字串都存在的。

經典C 面試題目

1 在c 中,string str null 與 string str 請盡量使用文字或圖象說明其中的區別。回答要點 說明詳細的空間分配。10分 答 string str null 是不給他分配記憶體空間,而string str 給它分配長度為空字串的記憶體空間.請詳述在dotnet中類 class...

關於乙個面試題目

曾經碰到乙個面試題目,誰能給出標準答案呢?200個小孩圍乙個圈,從頭開始1到4報數,報到4這個數的退出圓圈,最後乙個留在圈裡的小孩編號是多少?在網上看到很多人給出的答案是 標準答案.public static void main string args while list.size 4 syste...

記錄乙個面試題目

掘金 上看到的乙個筆試題目,記錄並分析總結以下考察點。function foo return this foo.getname function foo.prototype.getname function var getname function function getname 判斷輸出結果 f...