字串相關的高頻面試題

2021-08-03 02:48:52 字數 1056 閱讀 8325

1. 給定乙個字串str,將其中所有空格字元替換成「%20」,假設str後面有足夠的空間。

方法為遍歷str,發現空格的數量為s,所以str在替換後 ,長度為   原來的長度+2*s。

然後從下標為原來的長度+2*s-1的地方開始拷貝的過程,從後向前拷貝!!

class replacement else

}return inistring; }};

對於上面的程式來說,一定更要注意陣列越界的問題。

2. 給定給乙個字串str,判斷是不是整體有效的括號字串。

這道題的最優解可以做到時間複雜度為o(n),額外空間複雜度為o(1)。

思路為首先,整形變數num,代表'('出現次數與')'出現次數的差值。

遍歷的過程中,如果遇到『(』則num++;

遍歷的過程中,如果遇到『)』則num--;

遍歷的過程中如果num<0,則直接返回false;說明左括號的數量小於右括號,右括號多了!

如果一直沒有出現上面的情況,則一直遍歷下去;

遍歷完成後,如果num==0,則返回true,否則返回false。

class parenthesis else

if(i>0)

positionb=i-pre[i-1];

else

positionb=0;

int m=positiona;

if(positionb>m)

m=positionb;

pre[i]=i-m+1;            

}int max=pre[0];

for(int i=0;imax)

max=pre[i];

}return max;}};

上面的程式中主要是對hash表的操作,十分重要,增加記錄(insert)、修改記錄(直接用下標)、以及查詢記錄find等。其中用find的返回的值是乙個迭代器的指標,這個指標指向的值是乙個pair型別的,通過map物件的方法獲取的iterator資料型別是乙個std::pair物件,包括兩個資料 iterator->first 和 iterator->second 分別代表關鍵字和儲存的資料 。

字串高頻面試題。

一 題目 把乙個01 只包含0和1的串 串進行排序。可以交換任意兩個位置,求最少交換的次數。方法 仿造快速排序裡面的partition的過程。最左邊的0和1是沒有意義的,從左到右掃到第乙個1,從右到左掃到第乙個0,然後交換,然後繼續掃下去,就ok啦。include include define ma...

字串相關面試題

面試題目 字串專題 c字串處理函式彙總實現 面試大多會用到 一道面試題 從乙個字串中找出第乙個不重複字元 程式設計師面試題精選100題 36 在字串中刪除特定的字元 一 整數與字串之間的相互轉換 字串處理函式彙總實現 面試大多會用到 轉換字串 插入字元個數 www.firnow.com 常見c語言面...

面試題 分割字串

package interview.string public class splitdemo 程式設計 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如 我abc 4,應該截為 我ab 輸入 我abc漢def 6,應該輸出為 我abc 而不是...