字符串中最大子串问题
2007-09-23 13:14
330 查看
输入一个字符串,输出其最大子串长度,即子串中任两个字符不相同 。本程序只能输入字母,空格以及逗号,并且不区分大小写,输出为第一个具有最大长度的子串以及其长度。
#include<iostream>
#include<string>
using namespace std;
int chartoi(char c)
...{
if(isalnum(c))
...{
if(isalpha(c))
return tolower(c)-'a';
else
return c-'0'+26;
}
else
if(isspace(c))
return 36;
else if(c==',')
return 37;
else
...{
cout<<"error input char"<<endl;
exit(0);
}
}
int substr(char* str, int len)
...{
int A[38]=...{0};
int i,j;
int maxlen=0,templen;
int beg=0,end=0;
for(i=0,j=0;i<len,j<len; ++j)
...{
int num=chartoi(str[j]);
if(A[num]==0)
A[num]=1;
else
...{
A[num]+=1;
int step;
for(step=i;step<=j;++step)//
...{
int num1=chartoi(str[step]);
if(A[num1]>1)
...{
--A[num1];
break;
}
}
i=step+1;
}
templen=j-i+1;
if(templen>maxlen)
...{
beg=i;
end=j;
maxlen=templen;
}
}
for(i=beg;i<=end;++i)
cout<<str[i];
cout<<endl;
return maxlen;
}
int main()
...{
char str[]="good morning, everyone";
cout<<str<<endl;
cout<<substr(str,strlen(str))<<endl;
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int chartoi(char c)
...{
if(isalnum(c))
...{
if(isalpha(c))
return tolower(c)-'a';
else
return c-'0'+26;
}
else
if(isspace(c))
return 36;
else if(c==',')
return 37;
else
...{
cout<<"error input char"<<endl;
exit(0);
}
}
int substr(char* str, int len)
...{
int A[38]=...{0};
int i,j;
int maxlen=0,templen;
int beg=0,end=0;
for(i=0,j=0;i<len,j<len; ++j)
...{
int num=chartoi(str[j]);
if(A[num]==0)
A[num]=1;
else
...{
A[num]+=1;
int step;
for(step=i;step<=j;++step)//
...{
int num1=chartoi(str[step]);
if(A[num1]>1)
...{
--A[num1];
break;
}
}
i=step+1;
}
templen=j-i+1;
if(templen>maxlen)
...{
beg=i;
end=j;
maxlen=templen;
}
}
for(i=beg;i<=end;++i)
cout<<str[i];
cout<<endl;
return maxlen;
}
int main()
...{
char str[]="good morning, everyone";
cout<<str<<endl;
cout<<substr(str,strlen(str))<<endl;
return 0;
}
相关文章推荐
- 最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理
- 动态规划 字符串最大公共子序列以及最大公共子串问题LCS
- java实现字符串匹配问题之求两个字符串的最大公共子串
- js判断出两个字符串最大子串的函数
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 练习二 将字符串反转 练习三 获取关键字出现的次数 练习四 获取2个字符串中最大公共子串
- 字符串问题---找到字符串的最长无重复字符子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 返回两个字符串中的最大子串
- 算法学习(十二)最大连续乘积子串、字符串编辑距离
- 查找两个字符串的最大字串和子串
- zoj Rescue the Rabbit AC自动机+状态压缩DP n个有价值的子串,求长度为len的字符串的最大值(每子串的值最多用一次)
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 滴滴打车2017年秋招编程题:子串和最大问题
- 字符串中对称子串的最大长度
- 最大子串和问题(Maximum Subarray)
- 编程实现获取两个字符串中最大相同子串