給定乙個字串,刪除字串裡面的回文屬性

2021-09-22 21:58:13 字數 733 閱讀 1291

比如乙個字串abcdedeth,在字串中可以看到ded是乙個回文字串,我們編寫**刪除一些字元,使得字串不存在回文屬性的子字串。

(1)演算法分析:我們可以充分利用字串回文的屬性,假設abcde是我們處理好的不具備回文屬性的字串。當下乙個字母再進來的時候。我們需要怎麼處理呢?觀察abcde字串,當來的字母如果和abcde構成回文的的話,那麼構成回文只存在兩種情況(1)abcdee和(2)adcded。不由回文特性可知,不存在第三種情況。如果存在第三種情況回文。那麼加進來的字母必和adcde的abc是一樣的。那麼意味著de構成回文,與我們的假設存在矛盾。

經過以上分析,當新來的字元的時候,我們只需要把這個字元和倒數第乙個字元和倒數第二個字元做比較即可,相等的時候,不新增。不相等的時候,新增進去即可。

整體的c++**如下:

#include

using namespace std;

void delahuiwen(char *str)

else

int temp2 = wei - 2;

if (temp2 >= 0)

}huiwen[wei] = str[i];

wei++;}}

huiwen[wei] = 『\0』;

cout << temp << endl;}

int main()

當我們處理一些具備特殊屬性的變數的時候,應該充分考慮這個變數的屬性對於程式設計效果的影響。有可能就會存在乙個比較簡單易行的方法。

倒置乙個字串裡面的單詞

面試寶典上的一道題。題目 倒置乙個字串裡面的單詞 例子 i am from wuhan.wuhan.from am i 思路 先倒置整個字串,然後倒置每個單詞。倒置乙個字串中的單詞 include include define buf 100 void stringreverse char inpu...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...

字串處理 乙個字串包含另乙個字串的所有字元

假設這有乙個各種字母組成的字串,假設這還有另外乙個字串,而且這個字串裡的字母數相對少一些。從演算法是講,什麼方法能最快的查出所有小字串裡的字母在大字串裡都有?比如,如果是下面兩個字串 string 1 abcdefghlmnopqrs string 2 dcgsrqpom 答案是true,所有在st...