给几个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