牛客NC142 最长重复子串【中等 字符串 Java/Go/C++】

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc

思路

   注意:题目给的时间复杂度是O(N^2)
   那么直接套用双重循环:外层循环i为假定起始重复子串的初始位置,
   内层循环的j为假定重复子串的结束位置。注意,如果j-i为奇数,
   那么不可能是重复子串,因此,每次把j的下标增加2。
   由于我们是假定从i到j的子串为重复子串,因此我们需要去验证,
   验证很简单,就是从中间截断,看前后两个串是否equals,
   如果是重复子串,则直接更新最大长度即可。

Java代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a string字符串 待计算字符串
     * @return int整型
     */
    public int solve (String a) {
        //注意:题目给的时间复杂度是O(N^2)
        //那么直接套用双重循环:外层循环i为假定起始重复子串的初始位置,
        //内层循环的j为假定重复子串的结束位置。注意,如果j-i为奇数,
        //那么不可能是重复子串,因此,每次把j的下标增加2。
        //由于我们是假定从i到j的子串为重复子串,因此我们需要去验证,
        //验证很简单,就是从中间截断,看前后两个串是否equals,
        //如果是重复子串,则直接更新最大长度即可。
        int ans = 0;
        for (int i = 0; i < a.length() ; i++) {
            for (int j = i; j <= a.length() ; j += 2) {

                String s = a.substring(i, j);
                if (s.length() % 2 == 1) continue;

                boolean eq = s.substring(0, s.length() / 2).equals(s.substring(s.length() / 2));
                if (eq) {
                    if (j - i > ans) {
                        ans = j - i;
                    }
                }

            }
        }
        return ans;
    }
}

Go代码

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param a string字符串 待计算字符串
 * @return int整型
 */
func solve(a string) int {
	//注意:题目给的时间复杂度是O(N^2)
	//那么直接套用双重循环:外层循环i为假定起始重复子串的初始位置,
	//内层循环的j为假定重复子串的结束位置。注意,如果j-i为奇数,
	//那么不可能是重复子串,因此,每次把j的下标增加2。
	//由于我们是假定从i到j的子串为重复子串,因此我们需要去验证,
	//验证很简单,就是从中间截断,看前后两个串是否equals,
	//如果是重复子串,则直接更新最大长度即可。

	ans := 0
	size := len(a)
	for i := 0; i < size; i++ {
		for j := i; j <= size; j++ {
			if (j-i)%2 == 1 {
				continue
			}

			s := a[i:j]
			size1 := len(s)

			s1 := s[0 : size1/2]
			s2 := s[size1/2:]

			if s1 == s2 {
				if (j - i) > ans {
					ans = j - i
				}
			}
		}
	}
	return ans
}

C++代码

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a string字符串 待计算字符串
     * @return int整型
     */
    int solve(string a) {
        //注意:题目给的时间复杂度是O(N^2)
        //那么直接套用双重循环:外层循环i为假定起始重复子串的初始位置,
        //内层循环的j为假定重复子串的结束位置。注意,如果j-i为奇数,
        //那么不可能是重复子串,因此,每次把j的下标增加2。
        //由于我们是假定从i到j的子串为重复子串,因此我们需要去验证,
        //验证很简单,就是从中间截断,看前后两个串是否equals,
        //如果是重复子串,则直接更新最大长度即可。

        int ans = 0;
        for (int i = 0; i < a.size(); i++) {
            for (int j = i; j <= a.size(); j++) {
                if ((j - i) % 2 == 1) continue;

                int L = i;
                int m = (j - i) / 2;
                int R = L + m;
                while (R < j) {
                    if (a[L] == a[R]) {
                        L++;
                        R++;
                    } else {
                        break;
                    }
                }

                if (L >= m && R == j) {
                    if (j - i > ans) {
                        ans = j - i;
                    }
                }
            }
        }
        return ans;

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614118.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode算法】28. 找出字符串中第一个匹配项的下标

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案四、JAVA截取字符串的常用方法4.1 通过subString()截取字符串* 一、题目 给你两个字符串 haystack 和 needle &#xff0c;请你在…

ubuntu安装oceanbase调通本地navicat链接

分为两部分 一安装oceanbase服务 准备工作 mkdir -p /data/1 /data/log1 chown -R admin.admin /data/1 /data/log1/偷偷说&#xff1a;其实这步我忘记执行&#xff0c;也没影响我安装 oceanbase程序是很占内存的在安装时我们要先下载好安装包&#xff1a; 然后放在能记住的…

react引入阿里矢量库图标

react引入阿里矢量库图标 登录阿里矢量库&#xff0c;将项目所需的图标放一起 react项目中新建文件夹MyIcon.js 3. 在页面中引入&#xff0c;其中type为图标名称

机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)

tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的&#xff0c;也可以是非阻塞的&#xff0c;取决于你的需求。下面是一个基本的 Python 示例&#xff0c;展示如何在 ROS 节点中使用 tf2 查询帧转换。 本教程假设您已完成tf2 静态广播器教程 (Python)和tf…

探索循环购模式:消费返利与积分机制的创新融合

大家好&#xff0c;我是吴军&#xff0c;今天非常荣幸能与大家分享一种别具一格的商业模式——循环购模式。这种商业模式在近年来逐渐崭露头角&#xff0c;受到了广大消费者的热烈追捧。或许您之前听说过消费满额即送现金的活动&#xff0c;但循环购模式不仅仅局限于此&#xf…

单细胞分析:多模态 reference mapping (2)

引言 本文[1]介绍了如何在Seurat软件中将查询数据集与经过注释的参考数据集进行匹配。我们展示了如何将来自不同个体的人类骨髓细胞&#xff08;Human BMNC&#xff09;的人类细胞图谱&#xff08;Human Cell Atlas&#xff09;数据集&#xff0c;有序地映射到一个统一的参考框…

数据库数据恢复—Sql Server数据库文件丢失丢失怎么恢复数据?

数据库数据恢复环境&#xff1a; 5块硬盘组建一组RAID5阵列&#xff0c;划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库&#xff0c;存储空间在操作系统层面划分了三个逻辑分区。 数据库故障&#xff1a; 数据库文件丢失&#xff0c;主要涉及3个…

【微信开发】微信支付前期准备工作(申请及配置)

1、申请并配置公众号或微信小程序 1.1 账户申请 通过微信公众平台&#xff0c;根据指引申请微信小程序或公众号&#xff0c;申请时需要微信认证&#xff0c;申请流程不在赘述 1.2 信息配置 申请通过后&#xff0c;需进入小程序和公众号内进行信息配置 1.2.1 小程序信息配置…

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…

怎么制作流程图?介绍制作方法

怎么制作流程图&#xff1f;在日常生活和工作中&#xff0c;流程图已经成为我们不可或缺的工具。无论是项目规划、流程优化&#xff0c;还是学习理解复杂系统&#xff0c;流程图都能帮助我们更直观地理解和表达信息。然而&#xff0c;很多人可能并不清楚&#xff0c;其实制作流…

【Linux】基础命令,文件处理,用户,vim编辑器,文件压缩

常用命令及参数&#xff1a;dir表示文件夹&#xff0c;file表示文件&#xff08;file可表示其他目录下的文件&#xff09; pwd命令&#xff1b;查看当前所属文件夹&#xff08;print working directory&#xff09; ls [选项] dir&#xff1b;查看当前、指定文件夹目录内容&am…

2.使用即时设计做页面原型

文章目录 1. 设计工具1.1. 上手1.2. 上手"即时设计"1.3. 产品原型偷师 2. 即时设计tips2.1. 完成后的效果图2.2. 画板 - iPhone容器2.3. 工具箱2.4. 画iPhone的状态栏和indicator2.4.1. 设计标准2.4.2. 小程序状态栏2.4.3. iPhone的indicator 2.5. 引入iconfont2.6. …

安全继电器的使用和作用

目录 一、什么是安全继电器 二、安全继电器的接线方式 三、注意事项 四、总结 一、什么是安全继电器 安全继电器是由多个继电器与硬件电路组合而成的一种模块&#xff0c;是一种电路组成单元&#xff0c;其目的是要提高安全因素。完整点说&#xff0c;应该叫成安全继电器模…

激光测径仪在胶管生产中扮演着什么角色?

关键词&#xff1a;激光测径仪,胶管,胶管测径仪,在线测径仪 胶管生产的基本工序为混炼胶加工、帘布及帆布加工、胶管成型、硫化等。不同结构及不同骨架的胶管&#xff0c;其骨架层的加工方法及胶管成型设备各异。 全胶胶管因不含骨架层&#xff0c;只需使用压出机压出胶管即可&…

APP广告转化流程对广告变现收益有影响吗?

对接广告平台做广告变现的APP开发者都清楚&#xff0c;广告变现的价格、收益不是一成不变的&#xff0c;经常会遇到eCPM波动对广告收益产生较大影响。 导致APP收益产生波动的因素包括&#xff1a;用户质量、广告类型、广告平台的资源波动、广告预算的季节性、广告展示量级等。…

【软考高项】四十一、十大管理记忆技巧

一、技巧1&#xff1a;绩效数据、信息、报告的流向 监控过程组除了 整合管理的2个过程&#xff0c;其余都有 绩效数据作为输入 监督风险 的输入同时有绩效数据和绩效报告 二、技巧2&#xff1a;可交付成果、核实的可交付成果、验收的可交付成果 三、技巧3&#xff1a;变更请求、…

Ansible之Playbook的Template模板和tags标签

文章目录 一、Template模块1、准备template模板文件2、修改主机清单文件3、编写playbook4、执行playbook5、准备测试网页6、访问测试 二、tags模块1、编写脚本2、执行tags"xx01"3、执行tags"xx02" 一、Template模块 Jinja是基于Python的模块引擎。Templat…

NPOI生成word浮动图标

1、NPOI版本2.7.0, net框架4.8 2、安装OpenXMLSDKToolV25.msi 3、先创建一个word文档&#xff0c;并设置图片为浮于文字之上 4、OpenXML显示的结果 5、实际代码如下&#xff1a; public class GenerateWordDemo {public GenerateWordDemo(){}//https://blog.fileformat.co…

【机器学习】卷积神经(CNN)在图像识别中的革命性应用:自动驾驶的崛起

卷积神经网络&#xff08;CNN&#xff09;在图像识别中的革命性应用&#xff1a;自动驾驶的崛起 一、卷积神经网络&#xff08;CNN&#xff09;的基本原理二、CNN在图像识别中的显著成果三、CNN在自动驾驶汽车中的物体检测和识别四、CNN在图像识别中的代码实例 随着人工智能和深…

Vue3人员选择组件封装

一、组件介绍 人员组件在各系统的应用都是比较广泛的&#xff0c;因此可以将其封装为可配置的人员组件&#xff0c;根据不同角色权限显示对应的人员供选择&#xff0c;代码目前只是一部分&#xff0c;需要源码的私聊。 二、直接上代码 use.vue 父组件 <div class&q…