中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 04:56
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 对称输出加分题(具有挑战性)
可打印版本  4,418 / 64
第61楼 quya 发表于 2008-07-14 10:48
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by zw19750516 at 2008-7-14 10:39 AM:
效率问题出在这里:echo %input%|findstr >nul||set str=#%str:~1,-1%%#
在批处理中要尽量用if做判断,少用findstr。


如前所述, 这是为了兼容性. 我最得意的就是这句了. 而且实际上这里只存在2个字母的判断, 你的CODE再长, 也依旧是2个字母.

高效率和简洁应该建立在准确的前提上吧?

比较了38楼的代码, 运行速度快我很多, 我承认, 因为几乎在瞬间给出答案. 但正如作者所言无法处理重复字母.

我的57楼代码需要等待一下. 想改进但囿于水平问题, 无法再提高了.
另外, 谁能告诉我57楼第二段代码错在哪里? 谢谢了


[ Last edited by quya on 2008-7-14 at 11:20 AM ]
第62楼 quya 发表于 2008-07-14 13:00
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by zw19750516 at 2008-7-14 08:38 AM:
老土,代码第一是考虑效率,第二才是简洁,你这个方案存在效率问题,同时('echo %str%')可以修改为("%str%")。


考虑了下, 不得不面对效率不高的问题, 所以修改如下:




这下速度同样飞快了.
第63楼 bat-zw 发表于 2008-07-14 16:08
金牌会员 发帖 1,276 积分 3,105
还有个问题要指出一下:
if 判断语句的最好加上引号 if "%string:~0,1%"=="#" 或 if "%string:~0,1%" equ "#"
第64楼 qzwqzw 发表于 2008-07-14 18:34
银牌会员 发帖 636 积分 2,343
再精简一下,思路更加清晰

第65楼 terse 发表于 2008-07-14 23:58
银牌会员 发帖 946 积分 2,404
Originally posted by qzwqzw at 2008-7-14 18:34:
再精简一下,思路更加清晰

@echo off
set/p input=请输入:
set tab=012t456789abcd6fghi3
:pro1
call set tab=%%tab:%input:~0,1%=#%%
set input=%input:~1%
if defined input ...

怎么显示输入的变成#
我改一下
上一页  12 3 4 5
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023