解题10(LongestSubStrBetweenAB)
题目描述
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
输入
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出
jklmnop
代码如下:
package com.yzh.hehe;
import java.util.Scanner;
public class LongestSubStrBetweenAB {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()) {
String a=scanner.nextLine();
String b=scanner.nextLine();
System.out.println(longestSubBetweenAB2(a, b));
}
scanner.close();
}
private static String longestSubBetweenAB(String a, String b) {
int alength=a.length();
int blength=b.length();
//保证a串为较短串
if (alength>blength) {
String temp=a;
int tempLength=alength;
alength=blength;
blength=tempLength;
a=b;
b=temp;
}
//从较短串整串开始,长度依次递减从左向右得到较短串子串,如果较长串中包含此子串,即为目标子串
for (int i=alength; i> 0; i--) {
int count=alength-i+1;
for (int j = 0; j < count; j++) {
if (b.contains(a.substring(j, j+i))) {
return a.substring(j,j+i);
}
}
}
return null;
}
// 动态规划解决最长子串问题
private static String longestSubBetweenAB2(String a,String b) {
int alength=a.length();
int blength=b.length();
//保证a串为较短串
if (alength>blength) {
String temp=a;
int tempLength=alength;
alength=blength;
blength=tempLength;
a=b;
b=temp;
}
int[][]arr=new int[alength+1][blength+1];
String[][] sArr=new String[alength+1][blength+1];
StringBuilder stringBuilder=new StringBuilder();
String resultString=null;
int result=0;
for (int i = 0; i <= alength; i++) {
for (int j = 0; j <= blength; j++) {
if (i==0||j==0) {
arr[i][j]=0;
sArr[i][j]="";
}else if (a.charAt(i-1)==b.charAt(j-1)) {
arr[i][j]=arr[i-1][j-1]+1;
// stringBuilder.append(b.charAt(j-1));
sArr[i][j]=sArr[i-1][j-1]+a.charAt(i-1);
if (arr[i][j]>result) {
result=arr[i][j];
resultString=sArr[i][j];
}
}else {
arr[i][j]=0;
sArr[i][j]="";
// stringBuilder.delete(0, stringBuilder.length());
}
}
}
if (resultString.length()==0) {
return null;
}
return resultString;
}
}
解题10(LongestSubStrBetweenAB)的更多相关文章
- linux系统无法正常启动,故障排查恢复
linux内核启动修复 首先看linux内核重要文件grub.conf # grub.conf generated by anaconda # # Note that you do not have ...
- linux内核启动修复
linux内核启动修复 首先看一下linux内核重要文件grub.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # gru ...
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- SICP 习题 (1.10)解题总结
SICP 习题 1.10 讲的是一个叫“Akermann函数”的东西,去百度查可以查到对应的中文翻译,叫“阿克曼函数”. 就像前面的解题总结中提到的,我是一个数学恐惧者,看着稍微复杂一点的什么函数我就 ...
- SICP 习题 (2.10)解题总结: 区间除法中除于零的问题
SICP 习题 2.10 要求我们处理区间除法运算中除于零的问题. 题中讲到一个专业程序猿Ben Bitdiddle看了Alyssa的工作后提出了除于零的问题,大家留意一下这个叫Ben的人,后面会不断 ...
- 【LeetCode】1012. Complement of Base 10 Integer 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【九度OJ】题目1208:10进制 VS 2进制 解题报告
[九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...
- 2016/10/28 很久没更了 leetcode解题 3sum问题进阶版4sum
18. 4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c ...
- 2016/10/28 很久没更了 leetcode解题 3sumcloset
16.3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closes ...
随机推荐
- eclipse添加缺失的包/src/main/resource
右键>>build path>>source 添加文件夹
- python学习笔记_week5_模块
模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
转自:http://blog.csdn.net/lmj623565791/article/details/38377229 ,本文出自[张鸿洋的博客] 很多人面试肯定都被问到过,请问Android中的 ...
- HTML5 实现获取 gzip 压缩数据,并进行解压,同时解决汉字乱码,相关 pako.js
1, 下载 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData 2, 首先需要了解一下 XMLHttpReques ...
- oracle删除表数据的两种的方式
转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种 ...
- antd-mobile使用报错
在第一次使用时,按照官网的进行配置,完了报错找不到antd-mobile下面的css 解决方法来源于 :https://github.com/ant-design/ant-design-mobile/ ...
- 完美解决ubuntu下sublime中文输入问题
声明 1.本人整理文章,转载请注明出处. 2.参考资料 http://my.oschina.net/tsl0922/blog/113495 问题描述 在ubuntu下想使用sublime,但是不能输入 ...
- win10 解决 WMI Provider Host 占用CPU过高问题
真心懒得写Blog,但是之前遇到这个问题在网上查了一大圈,几乎一摸一样都是让关防火墙等服务的,然而对于我来说,并没有毛线用. 无奈,直接去微软社区查,还真有一篇问题解决方案.顺手翻译一下放在这里,希望 ...
- java 父类引用指向子类对象---动态绑定
知识点: 1.java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法: 2.父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private.非 final 方法),那么这个对 ...
- 浅谈 REST 和 RESTFul API
RESTFul API的特点: 基于“资源”,数据也好.服务也好,在RESTFul设计里一切都是资源. 无状态.一次调用一般就会返回结果,所有的资源,都可以通过URI定位 URL中通常不出现动词,只有 ...