老师上课教了用二分法查找信息,如果我把它用来计算字符串长度,会不会效率更高呢?
经测试,在最坏情况下,也仅需循环十几次就可以得到结果
代码如下:- @echo off
- setlocal enabledelayedexpansion
- set /p str=input string:
- call :len ^!str!
- pause>nul
- exit
- :len
- set "t=%1"
- set long=0 & set longb=8192
- for %%a in (8192 4096 2048 1024 512 256 128 64 32 16 8 4 2) do (
- set /a zz=long+longb
- set /a "zz=zz/2"
- set /a zzs=zz+1
- set flag=false
- for %%b in (!zz!) do (if "!t:~%%b,1!" neq "" set flag=true)
- for %%b in (!zzs!) do (if !flag!==true if "!t:~%%b,1!"=="" echo !zzs! & goto:eof)
- if !flag!==false (set longb=!zz!) else (set long=!zz!)
- )
- if "!t!" neq "" (echo !zz!) else (echo 0)
- goto:eof
复制代码
|