package com.sf.ccmas.video.config.odd.od5;
import java.util.Scanner;
/**
* 本期题目:找出重复代码
* 题目描述
* 小明负责维护项目下的代码,需要查找出重复代码,用以支撑后续的代码优化,请你帮助小明找出重复的代码。
* 重复代码查找方法:以字符串形式给出两行代码(字符审长度1< length < 100,由英文字母、数字和空格组成),找出两行代码中的最长公共子串
* 注:如果不存在公共子串,返回空字符串
* 输入描述
* 输入的参数 text1,text2 分别表示两行代码
* 输出描述
* 输出任一最长公共子串
* 示例一
* 输入
* hello123world1
* hello123abc4
* 输出
* hello123
*
* 示例二
* 输入
* a_private_void_method
* public_void_method
*
*/
public class Search {
//解题方法:双指针法, 题目要求返回下标最大的字串,可以用倒序遍历字符串,返回第一个结果
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String strOne = sc.nextLine();
String strTwo = sc.nextLine();
int lengthOne = strOne.length();
int lengthTwo = strTwo.length();
String moreStr = lengthOne >= lengthTwo ? strOne : strTwo;
String lessStr = lengthOne < lengthTwo ? strOne : strTwo;
int minLength = lessStr.length();
String maxSubstring = null;
//子串的最大长度
int maxLen = 0;
for (int i = 0; i < lessStr.length(); i++) {
for (int j = i+1; j < lessStr.length(); j++) {
String substring = lessStr.substring(i, j);
if (moreStr.contains(substring)) {
if (substring.length() > maxLen) {
maxSubstring = substring;
maxLen = substring.length();
}
}
}
}
System.out.println(maxSubstring);
}
}
华为OD题目:找出重复代码
最新推荐文章于 2023-05-11 10:44:16 发布