[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. function arrange(str) {
  2.     str = str + '';
  3.     if (str.length <= 1) {
  4.         return [str];
  5.     }
  6.     var aStrRest = arrange(str.slice(1));
  7.     var sFirst = str.charAt(0);
  8.     var item;
  9.     var aReturn = [];
  10.     for (var i = 0, l = aStrRest.length; i < l; i++) {
  11.         item = aStrRest[i];
  12.         for (var j = 0, litem = item.length; j <= litem; j++) {
  13.             aReturn.push(item.slice(0, j) + sFirst + item.slice(j));
  14.         }
  15.     }
  16.     return aReturn;
  17. }
  18. console.log(arrange('bathome').join('\n'));
复制代码
1

评分人数

TOP

  1. @echo off
  2. REM %str%为要排列的字符串,但不能含"^
  3. set "str=|&<>bat"
  4. call :arrange "%str%"
  5. pause
  6. exit /b
  7. :arrange
  8. setlocal
  9. set "s=%~1"
  10. if not defined s (
  11.     call :escape "%~2"
  12.     call echo,%%r%%
  13.     goto end
  14. )
  15. set /a "n=0"
  16. :loop
  17. set /a "m=n+1"
  18. call set "pre=%%s:~%n%,1%%"
  19. call set "rest=%%s:~,%n%%%%%s:~%m%%%"
  20. if not defined pre goto end
  21. call :arrange "%rest%" "%~2%pre%"
  22. set /a "n+=1"
  23. goto loop
  24. :end
  25. endlocal
  26. exit /b
  27. :escape
  28. set "r=%~1"
  29. set "r=%r:^=^^%"
  30. set "r=%r:&=^&%"
  31. set "r=%r:|=^|%"
  32. set "r=%r:<=^<%"
  33. set "r=%r:>=^>%"
  34. set "r=%r:"=^"%"
  35. exit /b
复制代码
1

评分人数

TOP

回复 1# happy886rr


    为什么你这算法的数组操作35ms完成,而我字符串操作7ms完成,为什么数组会慢 这么多?不合理啊!!

TOP

回复 14# flashercs


    我明白了,性能差主要是函数调用次数太多,那种算法调用了7的阶乘次函数,而用循环来实现会快很多。我那个调用7次函数,所以快一些,但是应该可以只用循环实现的,就是三个嵌套循环。

TOP

返回列表