有趣的一道面试题,求连续的0或者连续的1的最大次数

给几个0和1组成的字符串,要求用程序算成连续的0或者连续的1的最大次数,例如

0011111000100100111    最大5
010011100001101100     最大4
00111110001001000000111     最大6

我写了个ORACLE函数,勉强能实现这个功能,如下:

create or replace function FUNC_LSX_TEST(in_str varchar) return number
as
   v_i varchar2(1) ;
   v_j varchar2(1) ;
   v_return number :=1 ;
   i number :=1 ;
   j number :=1 ;
   v_flag number :=1 ;
   type t_tbl is table of number index by binary_integer;
   t_return t_tbl ;
  
begin
  t_return(1) :=1 ;
   while i<length(in_str)
      loop
     v_i := substr(in_str,i,1) ;
      v_j := substr(in_str,i+1,1) ;
        if(v_j is not null) then
           if(v_i = v_j) then
              t_return(i) := v_flag +1 ;
              v_flag := v_flag +1 ;
              i :=i+1 ;
           else
             v_return := 1 ;
             v_flag := 1 ;
             t_return(i) :=1 ;
             i :=i+1 ;
           end if ;
        else
          i :=i+1 ;
        end if ;
      end loop;
     
     
      while j < t_return.count -1 
       loop
        if (t_return(j) > v_return) then
           v_return := t_return(j) ;
           j := j+1 ;
         end if ;
       j := j+1 ;
       end loop;

  return v_return ;
end;

select FUNC_LSX_TEST('00111110001001000000111') from dual ;
6

原文地址:https://www.cnblogs.com/caibird2005/p/2396030.html