[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
powershell练习一下题目。千字文保存为qzw.txt
  1. $txt=(gc qzw.txt).split()|?{$_ -ne ""}
  2. $dic=@{}
  3. foreach($w in $txt){
  4. for($i=0;$i -le 3;$i++){
  5. if (!$dic.containskey($w[$i])){
  6. $dic[$w[$i]]=1
  7. } else {
  8. $dic[$w[$i]]+=1
  9. }
  10. }
  11. }
  12. write-host "千字文中有以下重复字"
  13. $dic.getenumerator()|?{$_.value -gt 1}
  14. [console]::readkey()
复制代码

TOP

@echo off
setlocal enabledelayedexpansion
set /a total=0
:: 4字组合的个数
set /a word4num=0
for /f "delims=" %%i in (test.txt) do (
        set line=%%i
        for %%j in (!line!) do (
                set word4=%%j
                set desmap!word4num!=!word4!
                set /a word4num+=1
                set /a total+=4
                for /l %%n in (0 1 3) do (
                        set temp=!word4:~%%n,1!
                        :: 打印重复的字
                        if defined dic[!temp!] echo !temp!重复
                        set dic[!temp!]=!temp!
                )
        )
)
:: 总的字数
echo 总字数:!total!
echo 点击继续,逆序打印
pause>nul
for /l %%m in (!word4num!, -1, 0) do (
        set descnum=%%m
        :: 逆序打印
        call echo %%desmap!descnum!%%
)

TOP

话说可不可以每进行到一个字,就把它和全文每个字对比一遍,这样效率很低,但是我实在只能想到这种...
一个六年级小学生,请多指教

TOP

理论上是这样的,实际上可以灵活掌握。
比如第一个字和后面所有的字对比;轮到第二个字比对时,因为与第一个字已经比对过了,所以可以不再与之比对,以此类推;
也可以依次做标记,如果碰到前面已标记的字,那就是重复的字;
等等等等。

TOP

返回列表