【java】求两个字符串的最长公共子串
这个是华为OJ上的一道题目。首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下:
(1)一定不可以有包名;
(2)主类名只能为Main;
(3)不可以输出与结果无关的信息。
好了,按照以上规则,我们写出来的代码如下(此代码不是最优的,只是用来记录华为OJ上java代码的书写规则):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Main mainObj = new Main();
int len = mainObj.getCommonStrLength(sc.next(),sc.next());
System.out.println(len);
}
int getCommonStrLength(String str1, String str2) {
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
int len1 = str1.length();
int len2 = str2.length();
String min = null;
String max = null;
String target = null;
min = len1 <= len2 ? str1 : str2;
max = len1 > len2 ? str1 : str2;
//最外层:min子串的长度,从最大长度开始
for (int i = min.length(); i >= 1; i--) {
//遍历长度为i的min子串,从0开始
for (int j = 0; j <= min.length() - i; j++) {
target = min.substring(j, j + i);
//遍历长度为i的max子串,判断是否与target子串相同,从0开始
for (int k = 0; k <= max.length() - i; k++) {
if (max.substring(k,k + i).equals(target)) {
return i;
}
}
}
}
return 0;
}
}
【java】求两个字符串的最长公共子串的更多相关文章
- 求两个字符串的最长公共子串——Java实现
要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的) public class Main03{ // 求解两个字符号的最长 ...
- [URAL-1517][求两个字符串的最长公共子串]
Freedom of Choice URAL - 1517 Background Before Albanian people could bear with the freedom of speec ...
- 求两个字符串的最长公共子串(LCS)
http://tianyunpu2008.blog.163.com/blog/static/6559379920089162236915/
- SPOJ 1811 Longest Common Substring(求两个串的最长公共子串 || 或者n个串)
http://www.spoj.com/problems/LCS/ 题目:求两个串的最长公共子串 参考:https://www.cnblogs.com/autoint/p/10345276.html: ...
- SPOJ 1811 Longest Common Substring (后缀自动机第一题,求两个串的最长公共子串)
题目大意: 给出两个长度小于等于25W的字符串,求它们的最长公共子串. 题目链接:http://www.spoj.com/problems/LCS/ 算法讨论: 二分+哈希, 后缀数组, 后缀自动机. ...
- poj 2774 后缀数组 两个字符串的最长公共子串
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 31904 Accepted: 12 ...
- 【Java例题】5.5 两个字符串中最长公共子串
5. 查找两个字符串中含有的最长字符数的公共子串. package chapter5; import java.util.Scanner; public class demo5 { public st ...
- hihocoder-1415 后缀数组三·重复旋律3 两个字符串的最长公共子串
把s1,s2拼接,求Height.相邻的Height判断左右串起点是否在两个串中,另外对Height和s1.length()-SA[i-1]取min. #include <iostream> ...
- SPOJ 1811. Longest Common Substring (LCS,两个字符串的最长公共子串, 后缀自动机SAM)
1811. Longest Common Substring Problem code: LCS A string is finite sequence of characters over a no ...
随机推荐
- centos6.5上安装配置telnet服务
https://blog.csdn.net/wx5040257/article/details/78327915
- jQuery插件实践之轮播练习(二)
所有文章搬运自我的个人主页:sheilasun.me 上一篇中学习了jQuery插件的写法,这篇该着手实现啦.首先明确一下轮播要具备哪些功能: 可以点击"向后"按钮向后翻页 可以点 ...
- Compoer的应用
composer总结 composer常用命令 composer list 列出所有可用的命令composer init 初始化composer.json文件(就不劳我们自己费力创建啦),会要求输入一 ...
- Solution for unable to create "dead-letter-exchange" in RabbitMQ
在参考 Dead-Letter-Exchange 进行Dead-letter-exchange的理解, 在本地时,想要创建 Dead-letter-exchange 时,一直报错,错误如下: Unha ...
- SQL server学习(五)T-SQL编程之存储过程
周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务 ...
- 潭州课堂25班:Ph201805201 并发(进程与线程池) 第十四课 (课堂笔记)
循环执行一个线程 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/20 0020 5:35 import threading import queue ...
- js监听全屏的事件
window.addEventListener('click',function(){ window.top.location.href = '../../loginOut.do'; //解决ifr ...
- ROS知识(24)——ros::spin()和spinOnce的含义及其区别
1.ros::spin()和spinOnce含义 如果在节点中如果订阅了话题,那么就必须要调用ros::sping()或者ros::spinOnce()函数去处理话题绑定的回调函数,否则该节点将不会调 ...
- spring和springMVC的面试问题总结
1.Spring中AOP的应用场景.Aop原理.好处? 答:AOP--Aspect Oriented Programming面向切面编程:用来封装横切关注点,具体可以在下面的场景中使用: Authen ...
- iOS:用Block写一个链式编程
一.介绍 链式编程是一个比较新颖的编程方式,简单直观,用起来也比较舒服.目前比较有名的Mansory和BabyBlueTooth就是使用链式编程写的第三方框架. 二.写法 链式编程写法不同于传统方式, ...