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,一经查实,立即删除!

相关文章

Spring Async和Java的8 CompletableFuture

众所周知&#xff0c;我不是Spring的最大粉丝&#xff0c;但是当时我在一个组织中工作&#xff0c;该组织使用Spring&#xff08;以不同的形式和版本&#xff09;维护了太多的项目。 我仍然对Spring持怀疑态度&#xff0c;当然有一些很好的主意&#xff0c;有一些很好的&#x…

JustOj 1032: 习题6.7 完数

题目描述 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。 例如&#xff0c;6的因子为1、2、3&#xff0c;而6123&#xff0c;因此6是"完数"。 编程序找出N之内的所有完数&#xff0c;并按下面格式输出其因子&#xff1a; 输入 N 输出 ?…

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

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

JS 操作cookie

平时网站的开发中cookie用的还是用的比较多的&#xff0c;因为cookie在客户端&#xff0c;所以用js操作的比较多&#xff0c;下面是常用的设置、查找、删除等功能实现。 function addCookie(objName, objValue, objHours){//添加cookie var str objName "" esc…

官方野生蝇群流口水分数

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

SQL-十步完全理解 SQL

十步完全理解 SQL http://blog.jobbole.com/55086/ 刚开始看到了 执行顺序&#xff0c;写得挺好的&#xff0c;明天继续转载于:https://www.cnblogs.com/hpyg/p/7270168.html

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

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

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

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

mysql optimizer_mysql 参数optimizer_switch

mysql 5.1中开始引入optimizer_switch, 控制mysql优化器行为。他有一些结果集&#xff0c;通过on和off控制开启和关闭优化器行为。使用有效期全局和会话两个级别&#xff0c;在5.5中optimizer_swtich 可取结果如下&#xff0c;不同mysql版本可取结果不同。5.1和5.6参考官方文档…

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

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

欧拉函数 euler

O - 找新朋友1、欧拉函数 euler&#xff08;&#xff09;在数论&#xff0c;对正整数n&#xff0c;欧拉函数是 少于或等于n的数中与n 互质 的数的数目。互质&#xff1a;公约数只有 1 的两个整数&#xff0c;称为互质整数。即 最大的公约数也就是 1 euler&#xff08;&#xf…

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.…

orderby排序慢_使用@OrderBy对Spring Data MongoDB集合进行排序

orderby排序慢这是关于调整和增强Spring Data MongoDB功能的第三篇文章。 这次&#xff0c;我发现我错过了一个JPA功能– OrderBy批注。 OrderBy指定在检索关联值时集合值关联的元素的顺序。 在本文中&#xff0c;我将展示如何使用Spring Data MongoDB使用OrderBy批注实现排序 …

细节取胜的javadoc

今个以为开发经验丰富的同事提出有个改动有问题&#xff0c;希望改一下。老前辈发话&#xff0c;心虚的紧&#xff0c;立即看了下&#xff0c;问题说是我的方法凝视中写了一个 ** doesnt ** 建议改为 does not 说这个生成javadoc有问题。咦。不禁困惑&#xff0c;这个写法我记得…

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

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

Java A的新本地变量类型推断

对于编程语言迷来说&#xff0c;新闻几乎比这更令人兴奋&#xff01; 现在有一个状态为“候选”的本地变量类型推断的JEP 286 。 以及Brian Goetz的反馈请求&#xff0c;我很想邀请您参加&#xff1a; http : //mail.openjdk.java.net/pipermail/platform-jep-discuss/2016-Ma…

扩展kmp

拓展kmp是对KMP算法的扩展&#xff0c;它解决如下问题&#xff1a; 定义母串S&#xff0c;和字串T&#xff0c;设S的长度为n&#xff0c;T的长度为m&#xff0c;求T与S的每一个后缀的最长公共前缀 其中next数组表示T[i,m-1]和T的最长公共前缀 1 const int maxn100010; //字符…

linux中mysql导入数据库命令_linux下mysql数据库导入导出命令

首先linux 下查看mysql相关目录rootubuntu14:~# whereis mysqlmysql:/usr/bin/mysql—- mysql的运行路径/etc/mysql/usr/lib/mysql—– mysql的安装路径/usr/bin/X11/mysql/usr/share/mysql/usr/share/man/man1/mysql.1.gz此外还有一个&#xff1a;var/lib/mysql ——–mys…