字符串长度

最长无重复字符串的长度(暴力法)

社会主义新天地 提交于 2019-11-28 06:23:29
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 题解 /* 最长无重复字符串的长度 */ int lengthOfLongestSubstring(char * s){//暴力法 int len=strlen(s);//获取字符串长度 if(!len)//如果len为0,就返回0 { return 0; } else if(len==1)//如果len=1,返回1 { return 1; } else { int start=0,end=1; int i; int max_len=1,cur_len=1;//最大长度,当前的长度 char temp_char; while (end<len) { temp_char=s[end]; for(i=start;i<end;i++) { if(s[i]==temp_char) { cur_len

redis源码分析(2)字符串sds.c

非 Y 不嫁゛ 提交于 2019-11-28 05:51:45
sds是一个char*的类型别名 可以把这个结构体和对应操作函数类比为C++中STL的string类。 这两个函数比较好理解,当传入的sds类型而非普通字符数组时,求sds的现有长度和sds的可用长度。 sdsnewlen 给定一个字符串init和字符串长度initlen,创建一个新的没有预留空间的sds。 可以看到,与字符数组一样,会预留1长度用来存放'\0'。 来源: https://www.cnblogs.com/sunmeng1994/p/11395487.html

Manacher模版

六眼飞鱼酱① 提交于 2019-11-27 12:04:06
现在讲的也是一种处理字符串的方法,叫做Manacher,有点像“马拉车” 1179: [视频]【Manacher】最长回文子串 时间限制: 1 Sec 内存限制: 128 MB 提交: 209 解决: 120 [ 提交 ] [ 状态 ] [ 讨论版 ] [命题人: admin ] 题目描述 【题意】 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文子串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 【输入格式】 输入有多组数据,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S 每组数据之间由空行隔开(该空行不用处理) 字符串长度len<=100000 【输出格式】 每一行一个整数x,对应一组数据,表示该组数据的字符串中所包含的最长回文子串长度. 【样例输入】 aaaa abab 【样例输出】 4 3 朴素做法:3重for循环:第一重枚举开头,第二重枚举结尾,第三重用来判断是不是回文串,记录答案更新最大值 但是我们的数据范围是10万,三重for循环是不可能不炸的 然后就要用到我们的Manacher,但是这道题也可以用后缀数组来做,不过Manacher更简单方便,下面我们来看一下“马拉车”                    a w e r s e s s a               # a # w # c # r #