问题:
找到一个字符串中的一个连续子串,这个子串内不能有任何两个字符是相同的,并且这个子串是符合要求的最长的。
程序:
代码
/************************************************************************/
/* 求最长不重复子串 */
/************************************************************************/
void lnorepstr(char* s)
{
char A[26];
int i, j;
int maxi, maxlen = 0;
int len = strlen(s);
// for(i = 0; i < 26; i++)
// A[i] = -1;
memset(A, -1, 26);
for (i = 0; i < len; i++)
{
A[s[i] - 'a'] = 1;
for(j = i+1 ; j < len; j++)
{
if(A[s[j]-'a'] == -1) //该字符没有出现
{
A[s[j]-'a'] = 1;
if(j - i> maxlen)
{
maxlen = j - i;
maxi = i;
}
}
else
break;
}
memset(A, -1, 26);
}
printf("longest no repeat string: %.*s\n", maxlen+1, &s[maxi]);
}
假设字符串全部是由小写字母组成,则内层循环最多执行26次,即最长不重复子串的长度为26,此时,时间复杂度为O(26n)。
分享到:
相关推荐
寻找最长不重复子串 python代码
本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法。分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python #encoding:utf-8 ''''' ...
### 在字符串中查找最长重复子串的探讨 #### 背景与问题定义 本篇文章主要探讨了如何在给定的字符串中找到最长的重复子串。例如,在字符串 "t1t1" 中,最长重复子串为 "t1";而在 "cabcabca" 中,最长重复子串可以...
否则,dp[i][j]为0,因为不匹配的字符无法构成公共子串。 在遍历过程中,我们还需要记录下最长公共子串的长度和结束位置,以便最后能够输出这个子串。当遍历完成后,最长公共子串的起始位置可以从dp数组中找到,...
Scratch不重复子串 第十五届蓝桥杯Scratch编程选拔赛真题源码 考点:此案例难度系数4;综合考查角色、背景添加、坐标、循环、条件判断、侦测模块、按下鼠标事件、询问机制、关系运算、列表操作、自定义积木等相关...
最长不重复子串及最长回文子串 \n"); printf(" 4.每个字符出现概率 \n"); printf(" 5.生成哈夫曼树并进行编码 \n"); printf(" 6.将文本转化为代码文件 \n"); printf(" 7.把二进制码解码成明文并与原函数对比 ...
这个问题的目标是找出给定字符串中的最长子串,这个子串中的所有字符都不重复。这是一个在编程面试和算法竞赛中常见的问题,尤其与动态规划、滑动窗口和哈希映射等技术有关。 描述 "在字符串中找到最长的不包含重复...
初始化时,如果字符串为空或者两个相邻的字符不匹配,公共子串长度设为0。否则,我们更新当前公共子串的长度,并检查是否超过了之前的最大长度。 当遍历完成后,`end_index`变量会指向最长公共子串在第一个字符串中...
给定一个字符串,例如"abcabcd",我们要找出其中最长的不重复子串。在这个例子中,最长的非重复子串是"abc",因为它在原字符串中只出现了一次。 为了实现这个功能,我们可以采用以下步骤: 1. **滑窗切片(slice_...
这个问题通常被称为"最长无重复字符的子串"或"最长不重复子串"。下面我们将深入探讨这个问题,并提供一种解决方案。 首先,我们需要了解什么是滑动窗口。滑动窗口是数组或字符串处理中常用的一种方法,它通过维护一...
通过上述代码,我们可以高效地找出任意字符串中的最长重复子串。这种方法不仅适用于简单的字符串,还能够处理较复杂的输入情况。对于初学者来说,这是一个很好的学习示例,有助于理解C语言中的字符串操作以及基本的...
2. **辅助数组**:为了跟踪已找到的重复子串的起始位置和长度,我们可以使用两个整型变量`index`和`length`来分别记录最长重复子串的起始位置和长度。 ### 三、算法设计与描述 算法的核心思想是遍历字符串S中的每...
寻找字符串中最长的不包含重复字符的子串,例如,字符串"abcabcbb"的最长不重复子串是"abc"。 **最长回文子串** 最长回文子串是指字符串中最长的回文序列,即正读反读都一样的子串。例如,"babad"的最长回文子串有...
本问题关注的是寻找一个字符串中最长的回文子串及其长度。回文子串是指一个字符串,从前往后读和从后往前读完全相同,例如"madam"和"level"都是回文。 解决这个问题可以使用多种算法,其中最著名的可能是Manacher's...
无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。
# 给定一个字符串,找出不含有重复字符的最长子串的长度 # 示例 1: # 输入: "abcabcbb" # 输出: 3 # 解释: 无重复字符的最长子串是 "abc",其长度为 3 # 示例 2: # 输入: "bbbbb" # 输出: 1 # 解释: 无重复字符的...
这个问题是LeetCode中的第3题,也被广泛地称为“最长不重复字符的子串”。在本文中,我们将深入探讨这个问题,了解其背后的算法思想,并通过PHP代码进行详细解析。 无重复字符的最长子串问题的核心在于寻找字符串中...
在IT领域,尤其是在算法设计与分析中,查找最长重复子串是一个常见的问题,涉及到字符串处理、数据结构和算法优化等多个方面。这个问题的核心在于从给定的字符串中找到最长的连续重复出现的子串及其首次出现的位置。...