C 面試題(六)

2021-08-18 22:55:40 字數 4020 閱讀 6536

1、判斷乙個字串是否是回文,例如「level」;

解析:根據題目要求,可以從單詞兩端進行遍歷比較。

(1)計算要比較的單詞字串長度,如level長度是5,則需要比較兩次。

(2)第一次比較,看第乙個和最後乙個字元是否相同,

(3)第二次比較,第二個符和倒數第二個字元比較是否相同。

**如下:

.cpp 檔案

#include 

using

namepace

std;

void

recv(char

*str)

len

=strlen(str);

for(inti=

0; i

<

len/

2; i

++)

} 

return

found;

}

void

main()

= ;

char

str2[7] = ;

int

test1

=recv(str1);

int

test2

=recv(str2);

cout

<<

"str1 is"

<< ("test1 == 1 ? "

" : "

not"") <<

"reserve string ."

<<

endl;

cout

<<

"str2 is"

<< ("test2 == 1 ? "

" : "

not"") <<

"reserve string ."

<<

endl;

reurn

0;

}

2.程式設計實現strcmp 庫函式。

解析:此題實際考察對兩個字串str1和str2的比較,若相等則返回1,,否則返回0;

**如下:

#include 

using

namespace

std;

void

strcmp0(char

*str1, char

*str2)

else

else

}

}

}

void

main()

= ;

char

str2[7] = ;

int

test

=strcmp0(str1,str2);

cout

<<

" "

<<

endl;

}

解析2:實際考察對兩個字串str1和str2的比較,若相等則返回:0,,str1大於str2,返回1,否則返回-1;

**如下:

#include 

using

namespace

std;

if(ret

<

0)

else

if(ret

>

0)

return(ret);

}

int

main()

3、程式設計查詢兩個字串的最大公共字元子串

解析:考點,字串相關綜合程式設計能力

**如下:

#include 

using

namespace

std;

void

strcmp0(char

*str1, char

*str2)

//判斷誰長誰短

if(strlen(str1) <=

strlen(str2))

else

//如果在長字串中能找到短的字串,則直接返回短字串

if(strstr(longstr, shortstr) !

=null)

//申請堆記憶體返回結果

substr

= (char

*)malloc(sizeof(char) * (strlen(shortstr) +

1));

for(i

=strlen(shortstr) -

1; i

>

0; i

--)

}

return

null;

}

void

main()

Google面試題(六)

題目 對現在的stack 棧 資料結構進行改進,加乙個min 功能,使之能在常數,即o 1 時間內給出棧中的最小值。可對push 和pop 函式進行修改,但要求其時間複雜度都只能是o 1 分析 要使pop,push,min都是o 1 所以肯定要犧牲點空間 思路 1 在stack的資料結構中加兩個個字...

iOS 面試題(六)

回答person的retaincount值,並解釋為什麼 person per person alloc init self.person per 1 或者2 看物件用什麼屬性修飾,person類物件在建立的時候引用計數加1,若用 assign類不會使引用計數加1的屬性修飾 person的retai...

面試題之六

什麼是tcp連線的三次握手?第一次握手 客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 syn k 即syn ack包,此時伺服器進入syn recv狀態 第三次握...