最近看書看不下去就刷面試題,決定把字串有關面試題都寫這個文章裡
1.實現乙個函式在字串中把空格替換成」%20」
注意是否會發生記憶體溢位
#include
#include
using
namespace
std;
void changezi(char** buff, int size)
}if(num = 0)//要考慮沒有空格的情況,那麼就什麼操作也不做
char* tmp = new
char[size + num * 2];
int j = 0;
for (int i = 0; i < size; ++i)
else
}*buff = new
char[size + num * 2];
strcpy_s(*buff, size + num * 2, tmp);
delete tmp;
delete tmp2;
}int main()
如果是對於已經知曉的,長度足夠的陣列,我們可以只通過o(n)的複雜度來賦值,乙個指標指向計算出新的長度的末尾,乙個指標指向原先長度的末尾,然後往前走,這樣只需要o(n)就可以在原先陣列上面複製成功了。
注意思考問題的完備性測試用例
(1)輸入字串包含空格
(2)輸入字串不包含空格
(3)輸入字串為null,因為**需要求長度,所以如果是空就進不去我的函式,所以算是變相檢查
新思想:
在複製字串時候為了避免移動,我們可以考慮從後向前複製,這樣可以大大的增加效率。
面試 字串 字串相乘
給出兩個字串的正整數,求其乘積,返回其乘積的字串的表示 public class solution 確保每個數字大小在0 9之間 int carry 0 for int i n 1 i 0 i string result boolean firstnonzero false 將陣列轉換為字串,如果第...
字串面試題 字串逆序
字串逆序可以說是最經常考的題目。這是一道入門級的題目。給定乙個字串s,將s中的字元順序顛倒過來,比如s abcd 逆序後變成s dcba 基本上沒有這麼考的,放在這裡主要是為了和後面的原地逆序做個對比。很簡單,直接分配乙個與原字串等長的字元陣列,然後反向拷貝一下即可。char reverse cha...
Java字串面試(二)
先看下面2個程式 public static void main string args public static void main string args 第乙個程式輸出是true,由於 a 和1算是字串常量,所以 在編譯期b的值就確定了,在執行期不會產生stringbuilder物件,所以在...