刪除字串中重複字元。

2021-08-04 23:54:47 字數 662 閱讀 3119

題目:刪除字串中重複字元。如果可以,優先刪除重複字元中排在比他小字元前面的字元。 比如,輸入:bbcacdww;輸出:bacdw

分析:如果根本不允許開設陣列,則只能就地進行字串去重,那麼可以依次訪問字串中的字元,並刪除從該字串開始到結尾的所有相同字元。時間複雜度為o(n^2 )。

void removeduplicate(char s)

else

++k;

}s[j] = '\0';

++i;

}

}

思路2:如果可以開設固定大小,與問題規模無關的固定陣列,假如字串中字元全為ascii字元,則可以開設乙個長度為256的陣列來表徵某乙個字元是否以前出現過。此時,時間複雜度為o(n);

void removeduplicate1(char s)

}s[j] = '\0';

}

思路3:如果字串中只包含a-z的26個字元,還可以用位示圖法來解決,此時只需要乙個int(4位元組32位),就可以實現第二種思想,此時空間複雜度為o(1),時間複雜度為o(n);

void removeduplicate2(char s)

}s[j] = '\0';

}

字串 如何刪除字串中重複的字元

刪除字串中重複的字元,例如,good 去掉重複的字串後就變成 god 第一種方法 蠻力法 最簡單的方法就是把這個字串看作是乙個字元陣列,對該陣列使用雙重迴圈進行遍歷,如果發現有重複的字元,就把該字元置為 0 最後再把這個字元陣列中所有的 0 去掉,此時得到的字串就是刪除重複字元後的目標字串。第二種方...

刪除重複字串

oj.h ifndef oj head define oj head int getresult const char input,char output endif oj.cpp include oj.h description 給定乙個字串,將字串中所有和前面重複多餘的字元刪除,其餘字元保留,輸...

如何刪除字串中重複的字元

預備知識 0表示整數,0 表示0字元,0 表示ascii碼值為0的字元 如果是 字串陣列 轉 字串 只能通過迴圈,沒有其它方法string str stringbuffer sb new stringbuffer for int i 0 i str.length i string s sb.tost...