输入一个字符串,输出该字符串中对称的子字符串的最大长度。
2013-07-18 20:10
357 查看
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
目前没想到更好的方法,时间复杂度是O(n^2);int max_len(char* str)
{
char *p = str;
int len = 1 ;
while(*p != '\0')
{
char *first,*last;
first = p - 1;
last = p + 1;
while( first >= str && *last != '\0' && *first == *last)
{
first--;
last++;
}
if( (last - first - 1 ) > len)
len = last - first - 1;
first = p;
last = p + 1;
while( first >= str && *last != '\0' && *first == *last)
{
first--;
last++;
}
if( (last - first - 1 ) > len)
len = last - first - 1;
p++;
}
return len;
}
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
目前没想到更好的方法,时间复杂度是O(n^2);int max_len(char* str)
{
char *p = str;
int len = 1 ;
while(*p != '\0')
{
char *first,*last;
first = p - 1;
last = p + 1;
while( first >= str && *last != '\0' && *first == *last)
{
first--;
last++;
}
if( (last - first - 1 ) > len)
len = last - first - 1;
first = p;
last = p + 1;
while( first >= str && *last != '\0' && *first == *last)
{
first--;
last++;
}
if( (last - first - 1 ) > len)
len = last - first - 1;
p++;
}
return len;
}
相关文章推荐
- 输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
- 输入一个字符串,输出该字符串中对称的子字符串的最大长度。
- 输入一个字符串,输出该字符串中最大对称子串的长度
- 给你一个字符串,找出该字符串中对称的子字符串的最大长度。
- 完美字符串 输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。如dad 77
- c语言输出字符串中最大对称子串长度的3种解决方案
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- c语言输出字符串中最大对称子串长度的3种解决方案
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中最大值
- 对称字符串的最大长度的一个解法
- 输入字符串,找出相同且长度最长的子字符串,输出
- 【程序38】 题目:写一个函数,求一个字符串的长度, 在main函数中输入字符串,并输出其长度。
- 找出该字符串中对称的子字符串的最大长度
- 找出字符串中对称的子字符串的最大长度(最长回文)
- java 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
- 习题 8.6 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
- 02_对N个长度最长可达到1000的数进行排序、对给定的一个字符串,找出有重复的字符,并给出其位置、输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序
- 最大堆---实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
- 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
- 找出字符串中对称的子字符串的最大长度(最长回文)