确实是很好的算法, 缺憾是当最大长度很大时, 也会需要很大的变量空间, len后面的标识符可用辅助代码生成无重复的序列
和 23 楼的想法一样, vva 变量是多余的, 我的改法更简明一些, 做个减法就行了 | @echo off&setlocal enabledelayedexpansion | | set aav=abcdefghijklmnopqrstuvwxyz不够的话文字也可以abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ | | set 最大长度=80 | | for /l %%a in (0,1,%最大长度%) do set /a len!aav:~%%a,1!=最大长度-%%a | | ::前面初始定义一次,后面可以任意使用,只要两个set 就可以取得字符串长度。 | | ::但前提是,你要知道需计算的字符串中,最长字符串的长度。 | | ::效率可想而知了! | | | | set str1=12345678 | | set str2=abcdefghijklmn | | | | set var1=!str1!!aav! | | set var2=!str2!!aav! | | set/a var1=len!var1:~%最大长度%,1!,var2=len!var2:~%最大长度%,1! | | echo !str1! 长度为:!var1! | | echo !str2! 长度为:!var2! | | pauseCOPY |
[ 本帖最后由 neorobin 于 2009-12-11 06:14 编辑 ] |