我想你还是没有说清楚: 如果加入对中文字符的判断的话, 复杂程度增加了.
你真的是这个意思吗? 如果是, 那么我刚才给出的代码段也不能算完全正确的了.
下面是改进后的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
s,s0:widestring;
i,j:integer;
begin
s:=Edit1.Text
// 'aaaaaaaa'
for i:=1 to length(s) div 2 do
for j:=1 to (length(s)-i+1) div 2 do
begin
s0:=copy(s,i,j);
if pos(s0,copy(s,i+j,MaxInt))>0 then
if ListBox1.Items.IndexOf(s0)=-1 then
ListBox1.Items.Add(s0)
// 输出结果
end;
end;
对于输入字符串:
"如何在一个字符串中查找重复的字符,如aaaaaaaa,重复字符为a、aa、aaa、aaaa,字符串的长度不定。"
输出为:
如
字
字符
字符串
符
符串
串
重
重复
复
的
,
a
aa
aaa
aaaa
aaaa,
aaa,
aa,
a,
-------------------------------------
两段代码你不妨对比一下有什么不同