牛客網 2017騰訊實習生程式設計題

2021-07-24 23:54:42 字數 1646 閱讀 8329

一、構造回文

給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?

輸出需要刪除的字元個數。

輸入描述:

輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.

輸出描述:

對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。

輸入例子:

abcda

google

輸出例子:

2

2

思路:

根據回文串的特點,如果乙個字串是回文串,那麼這個字串和它的逆序串是相等的。所以上述問題轉化為求字串和逆序字串的最長公共子串行長度。

c++**:

#include#include#includeusing namespace std;  

int main()

for(i=0;i<=len1;i++)//for

for(i=1;i<=len1;i++)else

} }

cout<

二、演算法基礎-字元移位

小q最近遇到了乙個難題:把乙個字串的大寫字母放到字串的後面,各個字元的相對位置不變,且不能申請額外的空間。

你能幫幫小q嗎?

輸入描述:

輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.

輸出描述:

對於每組資料,輸出移位後的字串。

輸入例子:

aklebiceild

輸出例子:

kleieilabcd

思路:

遍歷兩遍字串,第一遍輸出所有的小寫字母,第二遍輸出所有的大寫字母

c++**

#include#includeusing namespace std;

int main()

map::iterator it1;

map::iterator it2;

int min=int_max;

int min_count=0;

int max_count=0;

it1 = a.begin();

it2 = a.begin();

it2++;

if(flag)

}}elseelse if(tmp == min)

}//for

} it1=a.begin();

it2=a.end();

it2--;

if(it1->first == it2->first)

max_count=min_count;

else

max_count = (it1->second)*(it2->second);

cout<

構造回文 騰訊實習生程式設計題

題目 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda ...

騰訊2017暑期實習生程式設計題

刷題 pragma warning disable 4996 遮蔽警告 構造回文 題目描述 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 其實就是,原字串翻轉之後的字串跟原字串的最長公共子串行 那麼利用動態規劃的最長公共...

騰訊2017暑期實習生程式設計題

構造回文串 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。示例1 輸入 a...