请高手进,关于pos 函数问题(50)

  • 主题发起人 主题发起人 qwert8008
  • 开始时间 开始时间
Q

qwert8008

Unregistered / Unconfirmed
GUEST, unregistred user!
这是我找的一个关于pos函数的代码,但是看不明白怎么写的这个函数,请高手注释一下好吗,谢谢这个函数和delphi中的pos函数作用是一样的,就是查找 "b"在“abcd"中的起始位置,我现在是不明白下面的这个mypos函数的编写的思路是怎样的,请高手给个注释function MyPos(u: string; s: string) : integer;vari,j: integer;beginResult := 0;for i := 1 to Length(s) dobeginif s = u[1] thenbeginj := 1;while j <= length(u) dobeginif u[j] = s[i+j-1] thenbeginj := j + 1;continue;endelsebreak;end;//whileif j > Length(u) thenResult := ielse Result := 0;end; //ifend; //forend;
 
function MyPos(u: string; s: string) : integer;//s为被比较字符串,u为比较字符串var i,j: integer;begin Result := 0; for i := 1 to Length(s) do//从第一个字符开始到最后一个字符 begin if s = u[1] then //如果s字符串中的第i个字符等于U字符串中的第一个字符 begin j := 1; while j <= length(u) do //当j小于等于U字符串的长度时,执行如下语句 begin if u[j] = s[i+j-1] then //如果U[j]字符等于s[i+j-1]字符时 begin j := j + 1; continue; end else break; //跳出 while语句 end;//while if j > Length(u) then 如果j大于等于U字符串的长度时,执行如下语句 Result := i else Result := 0; end; //if end; //forend;
 
begin if u[j] = s[i+j-1] then //如果U[j]字符等于s[i+j-1]字符时 begin j := j + 1; continue;这几句能详细讲解吗
 
if u[j] = s[i+j-1] then //如果U[j]字符等于s[i+j-1]字符时,此处考虑到如果U不是个单字符的情况,而是一组字符的字符串时,在比对了第一个字符后,再对U的第二、三个进行比对 begin j := j + 1; continue;
 
谢谢de410
 
de410 可真有耐性。
 
如果你需要从酸法的角度研究,这个程序时间复杂度太差(大约n*m,m=n/2),应该用循环的scansb汇编!
 
后退
顶部