c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...

156ba50b64d532e5d795bb4c113d60b7.png

查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)

给定一个字符串str,找到不重复字符的最长子字符串。

比如我们有 “ABDEFGABEF”, 最长的字符串是 “BDEFGA” 和 “DEFGAB”, 长度为6.

再如 “BBBB” 最长字符串是 “B”, 长度为1.

再比如 “neatcoding” 最长字符串是“neatcodi”, 长度为8.

所需的时间复杂度为O(n),其中n是字符串的长度。

我们将逐个字符地遍历该字符串

检查此字符是否在当前子字符串中,如果是,则将当前子字符串保存到子字符串集合中,使用此字符作为起始值创建一个新的子字符串;

如果否,则将此字符添加到当前子字符串中;

至此,循环结束,检查当前子字符串是否为空,如果是,则不执行任何操作

如果否,请将其添加到子字符串集合

我们设置一个对象来存储最长的子字符串,

现在,让我们遍历子字符串集合,找到最长的一个

检查当前子字符串是否更长,如果是,则替换最长的字符串

如果没有,什么也不做

最后,我们有最长的子字符串。

让我们编码。

In Javascript:

returnLongestNonRepeatSubString(s){

if(!s){

return "";

}

let subCollection = [];

let currentSub = "";

for(let i = 0; i < s.length; i ++) {

let c = s[i];

if(currentSub.indexOf(c) === -1) {

currentSub += c;

}

else {

subCollection.push(currentSub);

currentSub = "" + c;

}

}

if(currentSub.length > 0){

subCollection.push(currentSub);

}

let longest = "";

for(let i = 0 ; i < subCollection.length ; i ++) {

let sub = subCollection[i];

if(sub.length > longest.length) {

longest = sub;

}

}

return longest;

}

In C#:

string returnLongestNonRepeatSubString(string s)

{

if (string.IsNullOrEmpty(s))

{

return "";

}

List<string> subCollection = new List<string>();

string currentSub = "";

for (int i = 0; i < s.Length; i++)

{

char c = s[i];

if (currentSub.IndexOf(c) == -1)

{

currentSub += c;

}

else

{

subCollection.Add(currentSub);

currentSub = "" + c;

}

}

if (currentSub.Length > 0)

{

subCollection.Add(currentSub);

}

string longest = "";

for (int i = 0; i < subCollection.Count; i++)

{

string sub = subCollection[i];

if (sub.Length > longest.Length)

{

longest = sub;

}

}

return longest;

}

In Java:

String returnLongestNonRepeatSubString(String s)

{

if (s == null || s.length() == 0)

{

return "";

}

List<String> subCollection = new ArrayList<String>();

String currentSub = "";

for (int i = 0; i < s.length(); i++)

{

char c = s.charAt(i);

if (currentSub.indexOf(c) == -1)

{

currentSub += c;

}

else

{

subCollection.add(currentSub);

currentSub = "" + c;

}

}

if (currentSub.length() > 0)

{

subCollection.add(currentSub);

}

String longest = "";

for (int i = 0; i < subCollection.size(); i++)

{

String sub = subCollection.get(i);

if (sub.length() > longest.length())

{

longest = sub;

}

}

return longest;

}

In Kotlin:

fun returnLongestNonRepeatSubString(s: String?): String {

if (s == null || s.length == 0) {

return ""

}

val subCollection = ArrayList<String>()

var currentSub = ""

for (i in 0 until s.length) {

val c = s[i]

if (currentSub.indexOf(c) == -1) {

currentSub += c

} else {

subCollection.add(currentSub)

currentSub = "" + c

}

}

if (currentSub.length > 0) {

subCollection.add(currentSub)

}

var longest = ""

for (i in subCollection.indices) {

val sub = subCollection[i]

if (sub.length > longest.length) {

longest = sub

}

}

return longest

}

In Golang:

func returnLongestNonRepeatSubString(s string) string {

if len(s) == 0 {

return ""

}

subCollection := make([]string, 1)

currentSub := ""

for i := 0; i < len(s); i++ {

var c = s[i]

if !strings.Contains(currentSub, string(c)) {

currentSub += string(c)

} else {

subCollection = append(subCollection, currentSub)

currentSub = string(c)

}

}

if len(currentSub) > 0 {

subCollection = append(subCollection, currentSub)

}

var longest = ""

for _, sub := range subCollection {

if len(sub) > len(longest) {

longest = sub

}

}

return longest

}

In c++:

string

returnLongestNonRepeatSubString (const string & s)

{

if (s.empty ())

{

return "";

}

std::vector <string> subCollection;

string currentSub;

for (int i = 0; i < s.length (); i++)

{

char c = s[i];

if (currentSub.find (c) == -1)

{

currentSub += c;

}

else

{

subCollection.push_back (currentSub);

currentSub = string (1, c);

}

}

if(!currentSub.empty())

{

subCollection.push_back (currentSub);

}

string longest = "";

for (int i = 0; i < subCollection.size(); i++)

{

string sub = subCollection.at(i);

if (sub.length() > longest.length())

{

longest = sub;

}

}

return longest;

}

In Python:

def returnLongestNonRepeatSubString(s):

if not s:

return ""

subCollection = []

currentSub = ""

for c in s:

if (currentSub.find(c) == -1):

currentSub += c

else:

subCollection.append(currentSub)

currentSub = c

if currentSub:

subCollection.append(currentSub)

longest = ""

for sub in subCollection:

if (len(sub) > len(longest)):

longest = sub

return longest

In Swift:

func returnLongestNonRepeatSubString (s: String) -> String {

if (s == nil || s.isEmpty) {

return ""

}

var subCollection = [String]()

var currentSub = ""

for c in s {

let i = currentSub.firstIndex(of: c)

if(i == nil) {

currentSub = currentSub + String(c)

}

else {

subCollection.append(currentSub);

currentSub = String(c)

}

}

var longest = ""

for sub in subCollection {

if sub.length > longest.length {

longest = sub

}

}

return longest

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 触发器 本表_MySQL触发器处理本表数据

关于MySQL的触发器&#xff0c;基本上每个Mysql教程里都有讲到&#xff0c;但是我发现那些教程里讲的都是如何处理其他表的数据。在MySQL中写触发器操作关于MySQL的触发器&#xff0c;基本上每个Mysql教程里都有讲到&#xff0c;但是我发现那些教程里讲的都是如何处理其他表的数…

官方野生蝇群流口水分数

官方是什么&#xff1f; 标题太小&#xff0c;但有用的贡献。 Wildfly Swarm允许我们创建相当小的自包含应用程序&#xff0c;包括我们从Wildfly Application Server中需要的应用程序。 在这篇文章中&#xff0c;我们将研究与Wildfly Swarm合作使用的Drools分数 。 该部分背后的…

MySQL 高水位update_Oracle delete 高水位线处理问题

最近遇到oracle 表中数据量很大查询和更新比较慢 需要删除&#xff0c;发现删除后查询速度还是很慢&#xff0c;原来是delete oracle 高水位没有下降的最近遇到Oracle 表中数据量很大查询和更新比较慢 需要删除&#xff0c;发现删除后查询速度还是很慢&#xff0c;原来是delete…

jasperreports_JasperReports JSF插件用例–简单列表报告

jasperreports这是JasperReports JSF插件系列的第一篇“用例文章” &#xff0c;我将专注于一个简单的需求&#xff0c;并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置&#xff0c;我将向其中添加一个列表&#xff0c;其中包含在数据库中注册的其他图书&#xf…

2个菜鸟Java常量和枚举陷阱

在对Java和Groovy代码进行的各种代码审查中&#xff0c;我经常看到魔术数字和其他随机字符串在整个代码库中乱七八糟。 例如&#xff0c;魔术数字是下面的代码&#xff08;Groovy&#xff09;中的4.2&#xff1a; if (swashbuckle > 4.2) {... }4.2是什么意思&#xff1f;…

mysql cluster 外键_Mysql外键约束

Mysql集群创建外键&#xff0c;分为四种约束&#xff1a;no action&#xff0c;restrict&#xff0c;cascade&#xff0c;set null。如果表A的主关键字是表B中的字段&#xff0c;则该字段称为B的外键&#xff0c;表A称为主表&#xff0c;表B称为从表。外键是用来实现参照完整性…

Map类集合遍历

转载于:https://www.cnblogs.com/Neil223/p/7275035.html

小米10解锁bl跳过168_2021年小米红米手机官方解锁BL详细教程+跳过168小时方法合集...

MIUI的解锁风控一直在改动&#xff0c;从之前的无需解锁到现在的168小时绑定限制&#xff0c;时至2021年我们再次重新整理下小米的解锁新规则以及小米解锁常见问题解决方法。比如大家常问的如果跳过168小时解锁时间限制等等小米解锁工具下载&#xff1a;http://miuirom.xiaomi.…

android实现箭头流程列表_Android开发关于ExpandableListView上下箭头左右显示的笔记...

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;关键属性&#xff1a;android:layoutDirection""当安卓的layoutDirection “rtl” 时&#xff0c;箭头在右边显示布局&#xff1a;android:layout_width"match_parent"android:layout_height…

mysql 5.5.41 下载_MySQL 5.5.41/5.6.22 发布下载

MySQL 5.5.41 发布下载&#xff0c;此版本更新内容如下&#xff1a;编译改进移除了旧版本 Mac OS X 和 XCode 版本的CMake 工作区 (Bug #18510941)Previously, the MYSQL_MAINTAINER_MODE CMake option was turned on by default for debug builds and off for release builds…

mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...

熟悉Entity Framework应该对以下图片不陌生&#xff0c;他就是ADO.NET实体数据模型向导&#xff1a;可以将数据库的表自动生成模型类&#xff0c;或者创建Code First的模型文件。但是这个模型向导默认只显示微软自己的SQL Server数据源&#xff0c;如果想使用Mysql数据源&#…

ESP8266学习笔记6:ESP8266规范wifi连接操作

一、前言 我整理了从2015年至今关于ESP8266的学习笔记&#xff0c;梳理出来了开发环境、基础功能、进阶学习三大部分。方便自己和他人。可点此查看&#xff0c;欢迎交流。 之前在笔记4《ESP8266的SmartConfig》http://blog.csdn.net/iotisan/article/details/54849410中&#x…

关于flex,好像有12个属性非常重要

关于Flex&#xff0c;有12个属性非常重要 这几天在学习Flex布局&#xff0c;发现Flex真的好厉害&#xff01; Flex是Flexible Box的缩写&#xff0c;意为“弹性布局”&#xff0c;用来为盒模型提供最大的灵活性。 Flex是它能够简单、完整、响应式的实现各种网页布局&#xff0c…

MyBatis缓存与Apache Ignite的陷阱

一周前&#xff0c;MyBatis和Apache ignite 宣布支持apache ignite作为MyBatis缓存&#xff08;L2缓存&#xff09;。 从技术上讲&#xff0c;MyBatis支持两个级别的缓存&#xff1a; 本地缓存&#xff0c;默认情况下始终启用 L2缓存&#xff0c;可选 随着Apache Ignite项目…

python创建方法draw_Python做图像处理(五)---ImageDraw综合应用实例:自制验证码...

前面几讲讲解了pillow库中两个最重要的模块&#xff0c;Image模块与ImageDraw模块&#xff0c;本讲小编将这两个模块综合应用起来&#xff0c;来制作一个随机自动生成验证码的程序。1.生成验证码程序的算法设计原理验证码通常用于网络&#xff0c;是网站为了防止恶意注册和网络…

unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...

发现问题最近在工作中遇到一个问题&#xff0c;在运行了一个innoDB类型的sql文件&#xff0c;报了Error: Unknown storage engine InnoDB错误&#xff0c;网上查了很多方法&#xff0c;但是都没办法真正解决我的问题&#xff0c;后来解决了&#xff0c;在这里总结一下过程&…

oracle 中大于等于_针对oracle安装参数调整方法

solaris针对oracle安装的shmmax参数调整方法安装数据库不能拘泥于联机文档&#xff0c;最近看到好几个跑oracle的sun主机上&#xff0c;都把和数据库内存使用相关的操作系统内核参数shmmax设置成4G&#xff0c;因为联机文档中“solaris系统上安装oracle”是这样写的。具体实施时…

带有JAX-WS和Spring的Web服务应用程序

1.简介 这是一个漫长的等待&#xff0c;但是我终于发布了一个关于使用Spring创建第一个基于SOAP的Web服务应用程序的教程。 JAX-WS &#xff08;用于XML Web服务的Java API&#xff09;是用于以XML格式创建Web服务的一组API&#xff0c;我们最常将其称为基于SOAP的Web服务 &…

mvvm 自动绑定_ZK的实际应用:MVVM –表单绑定

mvvm 自动绑定这是我们从头开始构建ZK应用程序的第二集。 上一篇文章介绍了使用MVVM将数据加载和呈现到表中。 在本文中&#xff0c;我们将向您介绍ZK MVVM的表单绑定。 目的 我们将构建一个“添加”功能&#xff0c;使我们能够将新条目保存到清单中。 单击“添加”时出现表格…

mysql全表重命名备份_MySQL数据库重命名的快速且安全方法(3种)

MySQL数据库重命名的方法Innodb引擎的表如何改数据库名&#xff0c;MyISAM引擎又该如何操作。如果表是MyISAM引擎可以直接去到数据库目录mv重命名文件夹就可以。 Innodb完全不行&#xff0c;会提示相关表不存在。第一种方法&#xff1a;rename database 弃用了RENAME database …