剑指Offer----扩展:构造回文(腾讯)

原创 2016年08月28日 19:32:54

问题描述:

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。


方法一:


将输入的字符串翻转,利用动态规划求两个字符串的最大公共子序列!

源代码


#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>//memory函数

using namespace std;

int dp[1010][1010];

int getLCS(string str)
{
	string str2(str);
	reverse(str2.begin(), str2.end());
	int len = str.length();
	memset(dp, 0, sizeof(dp));
	for (int i = 0; i < len; ++i)
	{
		for (int j = 0; j < len; ++j)
		{
			if (str[i] == str2[j])
				dp[i + 1][j + 1] = dp[i][j] + 1;
			else
				dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]);
		}
	}
	return dp[len][len];
}

int main()
{
	string s;
	while (cin >> s)
	{
		cout << s.length()-getLCS(s) << endl;
		s.clear();
	}

	printf("%s %s\n", __DATE__, __TIME__);
	system("pause");
	return 0;
}

运行结果:
abcda
2
goole
3
abcdefgdscasb
6
^Z
Aug 28 2016 19:34:21
请按任意键继续. . .




版权声明:本文为博主原创文章,未经博主允许不得转载。

剑指Offer----扩展:字符移位(腾讯)

问题描述: 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗? 输入描述:输入数据有多组,每组包含一个字符串s,且保证...
  • qianqin_2014
  • qianqin_2014
  • 2016年08月28日 13:41
  • 350

腾讯 构造回文

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1...
  • lezong2011
  • lezong2011
  • 2016年06月08日 13:39
  • 1534

2016腾讯实习生笔试编程题:构造回文

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1 输出描...
  • u011086367
  • u011086367
  • 2016年10月21日 09:57
  • 198

腾讯17年实习生编程试题--构造回文

题目描述: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数 输入描述: 输入数据有多组,每组包含一个字符串...
  • U201017971
  • U201017971
  • 2016年05月30日 16:38
  • 2621

构造回文_腾讯实习生编程题

题目: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符...
  • u011707827
  • u011707827
  • 2016年09月02日 16:35
  • 246

剑指Offer----扩展:有趣的数字(腾讯)

问题描述: 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢? 输入描述: 输入包含多组测试数据。对于每组测试数据: N - 本组测试数据有n个数 a1,...
  • qianqin_2014
  • qianqin_2014
  • 2016年08月28日 16:25
  • 306

剑指offer----跳台阶

跳台阶问题是考察循环和递归的 第一题 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析 f(n)=f(n-1)+f(n-2)(n>=3,f(1)...
  • qq_14998713
  • qq_14998713
  • 2016年10月03日 19:11
  • 153

剑指Offer----跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路:1.斐波那契数列 public class Solution { public int...
  • u010013140
  • u010013140
  • 2017年07月09日 21:02
  • 41

剑指OFFER----跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 class Solution { public: int jumpFloor(in...
  • RUN32875094
  • RUN32875094
  • 2018年02月03日 15:07
  • 3

剑指Offer----面试题28----扩展:八皇后问题

题目: 在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少...
  • qianqin_2014
  • qianqin_2014
  • 2016年06月06日 22:55
  • 342
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指Offer----扩展:构造回文(腾讯)
举报原因:
原因补充:

(最多只允许输入30个字)