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

2021-10-09 01:14:23 字數 2696 閱讀 6056

一:構造回文

題目描述

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

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

樣例

輸入例子1

:abcda

google

輸出例子1:2

2

思路

問乙個字串刪除多少個字母後得到的回文串長度最大,就是問刪除最少多少個字元可以得到回文串, 根據回文串的特性, 問題可以轉化為:將字串翻轉後,求原串和翻轉串的最大公共子串行, 這個最長公共子串行就是最長的回文串,原串的長度減去子串行的長度就是最終答案。

**

#include

#include

#include

#include

using

namespace std;

const

int n =

1001

;int f[n]

[n];

string s1, s2;

intmain()

cout << n - f[n]

[n]<< endl;

}return0;

}

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

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

樣例

輸入例子1

:aklebiceild

輸出例子1

:kleieilabcd

思路

掃瞄兩遍, 第一遍存小寫字母, 第二遍存大寫字母, 保證順序不變即可。

**

#include

#include

#include

#include

using

namespace std;

const

int n =

10010

;int f[n]

[n];

string s;

char ans[

11000];

intmain()

for(

int i =

0; i < s.

size()

; i++

)for

(int i =

0; i < cnt; i++

) cout << ans[i]

; cout << endl;

}return0;

}

三:有趣的數字

題目描述

小q今天在上廁所時想到了這個問題:有n個數,兩兩組成二元組,相差最小的有多少對呢?相差最大呢?

樣例

輸入例子1:6

4512

453256

輸出例子1:1

2

思路

將陣列進行排序

判斷是否所以數字都相同, 如果是, 則兩個答案都是在n個數字中選擇兩個數字的方案數, 如果不是, 則進行第三步。

(查詢差值最小的方案數)判斷是否存在重複的數字, 如果存在, 那麼最小的數字差就是0, 此時只需要相同數字內部互相組合, 把方案數相加即可。

如果不存在相同的數, 那麼就衝前往後遍歷陣列, 遍歷所有差的情況, 找到最小的那個差值,如果當前的差值小於上乙個差值, 那麼差值變成這個更小的,答案變為1, 如果當前這個和最小差值相等, 則答案數加一

(查詢差值最大的方案數)就是排序後的第乙個數的數量乘以最後乙個數的數量

**

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

100010

;typedef

long

long ll;

int n;

intmain()

sort

(a, a + n)

;int k =m[a[0]

];int e = m[a[n -1]

];if(a[0]

== a[n -1]

)else}if

(ans ==0)

else

if(a[i]

- a[i -1]

== minn)}}

printf

("%d %d\n"

, ans, k * e);}

}return0;

}

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

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

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

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

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

程式設計題 構造回文 時間限制 1秒 空間限制 32768k 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個...