查找字符串‘11’在‘0100111001110011100110011001’中的出现位置和1的连续个数,连续出现1的次数大于等于2算一次,即‘111’算出现1次,个数为3,
谢谢回复!(大富翁上提问过,但无法登录)
谢谢回复!(大富翁上提问过,但无法登录)
解决方案 »
- delphi 开发 directshow 视频采集 如何设置尺寸
- 请问delphi8和delphi2005有什么功能上的差别吗?
- DEPHI IDE的几个小问题
- 急需delphi6.0开发人员指南 的电子书
- 求:合伙参加DELPHI加强班(包就业)博优惠!15号前--东莞!
- ReportBuilder生成的报表如何转出到Excel吗?
- 关于listview的问题!!(在线)
- 怎么让fastreport支持中文字段?
- 用delphi怎样表示当前路径?
- 大家帮忙提醒一下:字符串统计其中某个子串重复出现的次数,现在忘记了
- 简单的异常,谢谢指教??
- 在运算的过程中显示一个窗口,提示目前进行到哪一步操作?
var
I, ONum: Integer;
begin
Result := 0;
I := 1;
while I <= Length(S) do
begin
if S[I] = '1' then
begin
Inc(I);
if OneNum = 1 then
Inc(Result)
else
begin
ONum := 1;
while (S[I] = '1') and (I <= Length(S)) do
begin
Inc(ONum);
Inc(I);
end;
if ONum >= OneNum then Inc(Result);
end;
end
else Inc(I);
end;
end;OneCount := CountOneStr('0100111001110011100110011001', 2);
查找字符串‘11’在‘0100111001110011100110011001’中的所有出现位置和1的连续个数,连续出现1的个数大于等于2算一次,即‘111’算出现1次,个数为3,输出所有出现的位置和出现的1连续的个数
var
I, P, ONum: Integer;
begin
Pos := nil;
Num := nil;
I := 1;
while I <= Length(S) do
begin
if S[I] = '1' then
begin
P := I;
Inc(I);
ONum := 1;
while (S[I] = '1') and (I <= Length(S)) do
begin
Inc(ONum);
Inc(I);
end;
if ONum >= OneNum then
begin
SetLength(Pos, Length(Pos) + 1);
SetLength(Num, Length(Num) + 1);
Pos[High(Pos)] := P;
Num[High(Num)] := ONum;
end;
end
else Inc(I);
end;
end;const
SrcStr = '0100111001110011100110011001110011111111';
procedure TForm1.Button7Click(Sender: TObject);
var
Pos, Num: TIntegerDynArray;
I: Integer;
begin
CountOneStr(SrcStr, 2, Pos, Num);
Memo1.Lines.Add(SrcStr + ', ' + StringOfChar('1', 2));
for I := 0 to High(Pos) do
Memo1.Lines.Add(Format('Pos, Num: %d, %d', [Pos[I], Num[I]]));
end;