腾讯17年暑期实习生笔试题 - 构造回文
来源:互联网 发布:windows仿mac dock栏 编辑:程序博客网 时间:2024/05/20 13:18
问题
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。
输入描述
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
输出描述
对于每组数据,输出一个整数,代表最少需要删除的字符个数。
Java Code
import java.util.Scanner;public class ConstructPlalindrome { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNext()) { String s = scan.nextLine(); System.out.println(s); int len = lenghOfLCS(s, new StringBuffer(s).reverse().toString()); System.out.println(s.length() - len); } scan.close(); } //动态规划求最长公共子序列的长度 public static int lenghOfLCS(String s1, String s2) { char[] ch1 = s1.toCharArray(); char[] ch2 = s2.toCharArray(); int n1 = s1.length(); int n2 = s2.length(); int[][] table = new int[n1][n2];//所有元素默认初始化为0 if(ch1[0] == ch2[0]) table[0][0] = 1; //单独计算s1[0]与s2的LCS长度 for(int i = 1; i < n2; ++i) table[0][i] = (ch1[0] == ch2[i] ? 1 : table[0][i-1]); //单独计算s2[0]与s1的LCS长度 for(int i = 1; i < n1; ++i) table[i][0] = (ch2[0] == ch1[i] ? 1 : table[i-1][0]); //递推求解各个字符处的LCS长度 for(int i = 1; i < n1; ++i) { for(int j = 1; j < n2; ++j) { if(ch1[i] == ch2[j]) table[i][j] = table[i-1][j-1] + 1; else table[i][j] = Math.max(table[i-1][j], table[i][j-1]); } } return table[n1-1][n2-1]; }}
0 0
- 腾讯17年暑期实习生笔试题 - 构造回文
- 腾讯2017暑期实习生编程题-构造回文
- 构造回文--腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题-A-构造回文
- 腾讯2017暑期实习生编程题之构造回文
- 腾讯2017暑期实习生编程题--构造回文
- 腾讯2017暑期实习生编程题:构造回文 [python]
- 腾讯17年暑期实习生笔试题 - 字符移位
- 腾讯17年暑期实习生笔试题 - 有趣的数字
- 2016腾讯实习生笔试编程题:构造回文
- 构造回文串(腾讯2014暑期实习生)
- 构造回文字符串(最长公共子序列)----腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题——构造回文串
- 腾讯17年实习生编程试题--构造回文
- 构造回文_腾讯实习生编程题
- 笔试题81. 腾讯2017暑期实习生笔试题
- 算法与数据结构——算法题 79:构造回文(腾讯2017暑期实习生编程题) ? 待解决
- 腾讯笔试编程题(2017暑期实习生编程题)
- 关于安卓模拟器无法访问WebStorm网页问题
- Android Studio MAC版 代码提示快捷键
- Java MD5代码实现分析
- Hadoop2.6.4伪分布式安装
- <OJ_Sicily>生成字符串
- 腾讯17年暑期实习生笔试题 - 构造回文
- 面试:哈希:最长不同字符
- UEditor之实现配置简单的图片上传示例
- 数据结构与算法之六 双向链表和循环链表
- spring中的aop简单编程
- 2016-06-11 星期六 18:28:27 下午
- 4K播出(下)
- Egret教程(二、HelloWorld)
- Android基本控件常用属性及方法