如何去掉重复字符,求最佳解决办法. ( 积分: 50 )

  • 主题发起人 主题发起人 bnbchinafbi
  • 开始时间 开始时间
B

bnbchinafbi

Unregistered / Unconfirmed
GUEST, unregistred user!
var
s:string;
begin
s:='aabccde';
s:=FunctionX(s)//用了FunctionX(s)这个函数后,s:='abcde',也就是
// 去掉了重复的字符.
end;
希望各位大侠能帮我写出FunctionX函数的最佳实现方案,谢谢.
 
var
s:string;
begin
s:='aabccde';
s:=FunctionX(s)//用了FunctionX(s)这个函数后,s:='abcde',也就是
// 去掉了重复的字符.
end;
希望各位大侠能帮我写出FunctionX函数的最佳实现方案,谢谢.
 
function GetResult(const aVal: String): String;
var
I: Integer;
strTmp: String;
begin
strTmp := '';
for I := 1 to Length(aVal) do
begin
if aVal <> aVal[I - 1] then
strTmp := strTmp + Copy(aVal,I,1);
end;
Result := strTmp;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
procedure Del(var s: WideString);
var
I : Integer;
begin
for I := Length(S) downto 0 do
if s = s[i-1] then Delete(s, i , 1);
end;
var
s: widestring;
begin
s := 'aaaaaaaaabbccccccddeeffffffffffff1';
Del(s);
ShowMessage(s);
end;

函数可以处理汉字
 
用PChar的效率会高一点(如果字符串很长的话)
 
谢谢大家的帮助.
 
to xianguo:
为什么 用PChar的效率会高一点(如果字符串很长的话) ?
是不是 因为pchar在内存中是连续的原因?
 
function CleverString(Str: WideString): WideString;
var
i: Integer;
temp: WideString;
begin
if Trim(Str) <> '' then
begin
for i := Length(Str) downto 0 do
begin
temp := Str;
Delete(temp, i, 1);
if Pos(Str, temp) > 0 then
Delete(Str, i, 1);
end;
Result := Str;
end;
end;
 
楼上的解答有没有考虑这个问题如果是abacdce呢
 
楼上的楼上考虑了此问题,呵呵
 
sorry,Demogodyou正解,我是说楼上以前的,呵呵,另外,没有pchar快一点这个说法从某种意义来说pchar和string是一样的,只不过pchar多了一个结束符而已
 
用Tstringlist,sorted=true,如何?
 
小问题见功夫,欢迎各位大侠继续讨论.
 
Johnny_du,chenybin的方法不能处理s:=abcabc这种情况;
Demogodyou的方法不能通过编译.why?
问题还未解决,欢迎各位大侠继续关注和讨论.
 
sorry,Demogodyou方法是正确的.
 
function GetResultPro(const aVal: String): String;
var
I: Integer;
strTmp: String;
begin
strtmp := '';
for I := 1 to Length(aVal) do
begin
if AnsiPos(aVal,strTmp) = 0 then
strTmp := strTmp + Copy(aVal,I,1);
end;
Result := strTmp;
end;
 
这种问题是没有最佳答案的

主要看你要处理的字符串有多长. 如果要处理1K以内的数据楼上各位的答案可以接受. 如果要处理几十K上百K的数据楼上的答案已经不合适了.

其实楼主的问题可以认为是一个微型的全文检索问题. 要求最佳答案扩展开可以写本书了.
 
Another_eYes大侠能说说本论坛"全文检索"这一功能的基本实现原理吗?
 
自由界面和报表的完美解决方案!
http://www.anylib.com
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
687
import
I
后退
顶部