移動字串和字串刪除

2021-07-05 06:53:00 字數 1114 閱讀 5576

兩個小題目。

乙個是:字串裡面只有字母和星號,要求把星號移動最左邊,字母移動到最右邊,要求複雜度盡可能低。

比如「a*b*c*d*」移動之後成為」****abcd」

這個題目有兩個方法,首先就是暴力解法。從串尾或者串首判斷(假設串尾),如果是星號則移動到串首起第乙個不是星號的位置,然後把從那個位置開始的串統統後移一位到星號處。複雜度應該是 平方級。

這個方法的劣勢就在於字母移動的位置可能不是最終位置。而下面這個方法是一步到位地令非星號移動到最終位置

新增乙個變數j表示當前已經移動的字母的下標,初始值為len-1,

然後從後面逆序掃瞄字串,如果是星號則繼續掃瞄,如果不是訊號,則拷貝這個資料到j所在位置,同時j也自減。

這樣乙個週期走完之後,所有字母均移動好,剩下的就是把j個前位置全部重置為星號。這樣複雜度只有o(n)

**為:

bool

check(char c)

void move(char * p, int len)

int main()

; move(a, 10);

cout << a << endl;

return

0;}

第二題:給定乙個母串和子串,要求刪除所有和子串資料相同的字元,比如

「welcome to asted」模式串為」aeiou」結果要求為」wlcm t std」要求效能最優。

用上述的方法二,得到的**為:

bool

check(char c, char *pset, int setlen)

return

false;

}void move(char * p, int len, char *pset, int setlen)

int main()

; char b = ;

move(a, sizeof(a)-1, b, sizeof(b)-1);

cout << a << endl;

system("pause");

return

0;}

全文完

字串刪除

description 定義mystring類,包括 乙個字元陣列或字元指標,用於儲存字串內容。void input 讀取乙個不含空白符的字串。void output 輸出一行字串。void del char str 從當前字串中刪除str中的所有字元。input 兩個不含空白符的字串,每個佔一行。...

字串刪除

輸入兩個字串,從第乙個字串中刪除第二個字串中的所有字元,不可以使用replace 例如 輸入 they are students 和 aeiou 則刪除之後的第乙個字串變成 they r stdnts var str1 they are students str2 aeiou res 思路 判斷乙個...

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...