字符串中最大子串问题

原创 2007年09月23日 13:14:00

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

 

#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获取两个字符串中最大子串

1.程序 package Demo2; public class Compare { //获得两个字符串的最大子串,首先定义方法将两个字符串传入 public static String ...

135、编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为 "cad"

35、编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为 "cad" /* 35、编程实现:找出两个字符串中最大公共子字符串,如"abccade"...

截取两个字符串的最大子串

  • 2013年07月25日 13:16
  • 2KB
  • 下载

最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理

一.最长公共子串问题集(Longest Common Substring/LCS)     最长公共子串问题的基本表述为:     给定两个字符串,求出它们之间最长的相同子字符串的长度。 ...

字符串中最大对称子串的长度(C++软件工程师面试题)

字符串中最大对称子串的长度

黑马程序员_编写程序,获取两个字符串中最大相同子串

------- android培训、java培训、期待与您交流!---------        前段时间看完了毕老师关于字符串讲解的视频,最近为了加强对字符串的理解,就找到了获取两个字符串的最大子...
  • LFB168
  • LFB168
  • 2015年09月19日 11:05
  • 709

Leetcode005--字符串中最大的回文子串

给定一个字符串S,找出它的最大的回文子串,你可以假设字符串的最大长度是1000,而且存在唯一的最长回文子串...

String小练习4-获取两个字符串中最大相同子串

获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 “abcwerthelloyuiodef” “cvhellobnm” 思路: ...

获取字符串的最大子串

/* 需求:获取两个字符串中。一个字符串在另外一个的最大子串 思路: 首先遍历,从小到大找出小的那个字符串的子串, 每次找出就判断大的字符串是否包含它,如果包含就返回 */ package stri...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串中最大子串问题
举报原因:
原因补充:

(最多只允许输入30个字)