字符串中最大子串问题

输入一个字符串,输出其最大子串长度,即子串中任两个字符不相同 。本程序只能输入字母,空格以及逗号,并且不区分大小写,输出为第一个具有最大长度的子串以及其长度。

 

#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;
}
阅读更多
文章标签: iostream string c
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

字符串中最大子串问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭