字符串的算法问题,比较简单,兄弟比较愚笨不会。输入两个字符传数组比较,列出连续项最多的。
例如:输入asdddd和asdifjadddd返回dddd
public char[] cmp(char[] a,char[] b)
{
..............
}
帮个忙,郁闷啊,当初数据结构没学好

解决方案 »

  1.   

    这个还真比较难办呢!
    如果匹配到“abcd”和“ddef”怎么办呢?要哪个?我试个string的
    public String cmp(String a, String b)
    {
      if(-1!=b.indexOf(a)) return a;
      else if(a.length()>1){
         String temp=cmp(a.subString(1) ,b);
         if(null!=temp) return temp;
         else return cmp(a.subString(0,a.length()-1), b);
      }else{ return null;}}
      

  2.   

    public char[] charThan(char a[],char b[])
    {
      char a1=a[0];
      int count1,count2;
      for(int i=1;i<a.length;i++)
      {
        if(a1!==a[i])
        {
          count1=0;
          a1=a[i]
        }else count1++;
      }
      a1=b[0];
      for(int i=1;i<b.length;i++)
      {
        if(a1!==b[i])
        {
          count2=0;
          a1=b[i]
        }else count2++;
      }
      if(count1>count2)
         return a;
      else
         return b;
    }
      

  3.   

    楼上的算法明显不对, a和a后面字符比, b和b后面字符比
    a和b根本就没拉上关系
      

  4.   

    //非递归算法
    public char[] charThan(char a[],char b[])

      int start=0;
      int end=0;
      char temp=a[0];
      int indexA=0;
      int indexB=0;
      for(int i=0;i<a.length;i++)
      { 
        indexA=i;
        for(int j=0;j<b.length;j++){
         indexB=j;
         if(a[index]=b[indexB]){//开始匹配
           while(a[++indexA]==b[++indexB]){}
           if((indexA-i)>(end-start)){//如果找到更大的匹配串
              start=i; end=indexA;
           }//if((indexA-i)>(end-start))
           
         }//if(a[index]=b[j])
        }//for(int j=0;j<b.length;j++)
      }//for(int i=0;i<a.length;i++)   
      
      char ret[]=new char[end-start];
      for(int i=start; i<end; i++) ret[i=start]=a[i];
      return ret;
      
    }//public char[] charThan(char a[],char b[])