Я хочу вставить символ в каждое возможное положение строки s, кроме начала и конца. , например.Как вставить символ во все возможные позиции строки?
abc
I want to have
a-bc
ab-c
a-b-c
Ниже мой тест, но не правильно:
procedure TForm1.Button2Click(Sender: TObject);
var
start, i,j,k,position,loop: integer;
laststart,lastend:integer;
c,item,stem:string;
str, prefix:string;
begin
str:='abcd';
memo1.clear;
memo1.Lines.Add(str);
laststart:=0;
lastend:=memo1.lines.count-1;
position:=0;
prefix:='';
loop:=0;
while loop<=length(str)-1 do
begin
for j:= laststart to lastend do
begin
item:=memo1.lines[j];
for k:=length(item) downto 1 do
begin
if item[k]='-' then
begin
position:=j;
break;
end;
end; //for k
prefix:=copy(item,1,position);
stem:=copy(item,position+1, length(item));
for start:=1 to length(stem)-1 do
begin
c:=prefix+copy(stem,1,start)+'-'+
copy(stem, start+1,length(stem));
memo1.lines.add(c);
end;
end; //for j
laststart:=lastend+1;
lastend:=memo1.Lines.Count-1;
inc(loop);
end; //end while
end;
выводит:
abcd
a-bcd
ab-cd
abc-d
a--bcd // not correct
a-b-cd
a-bc-d
ab--cd //incorrect
ab-c-d
abc--d //incorrect
a--bc-d //incorrect
Я чувствую максимально возможные перерывы в Lenth (ул) -1, abc-> наиболее вероятна вставка 2 '-' (дважды). Это верно?
И есть ли другие более быстрые способы сделать это?
Большое спасибо.
Для достижения этой цели, я буду играть с двоичными числами ... Я бы увеличить его ... если 0 без разделителя, если 1, добавьте разделитель ... – Whiler
@Whiler: Это именно то, что я сделал ниже. –