找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19939|回复: 3

[技术讨论] 用你熟悉的语言,统计一千万个26字母

[复制链接]
发表于 2016-8-22 21:41:53 | 显示全部楼层 |阅读模式
转载来自微博@2gua 的题目:
http://weibo.com/1609119537/E4Kr ... t#_rnd1471872982902

用你熟悉的语言,统计一个字符串abcdefghijklmnopqrstuvwxyz...abcdefghijklmnopqrstuvwxyz(1千万个a-z,不可直接a=1千万......)中每个字母的个数,
最后输出类似图示。要求除了更好的方式(如更加Pythonic的方式),还要计算越快越好,并打印出代码执行时间(打印效果类似图示)[doge]
发表于 2016-8-22 23:25:08 | 显示全部楼层
gawk
  1. #*&cls&gawk -f "%~f0"&pause&exit

  2. BEGIN{
  3.     str="abcdefghijklmnopqrstuvwxyz...abcdefghijklmnopqrstuvwxyz"
  4.     t1=systime();
  5.     c=0;
  6.     while(c!=""){
  7.         i++;
  8.         c=substr(str,i,1);
  9.         a[c]++;
  10.     }
  11.     t2=systime();
  12.     t=t2-t1;
  13.     for(i=asorti(a,b);i>0;i--){if(b[i]!="")s=",'"b[i]"':"a[b[i]]""s};
  14.     print "{"substr(s,2)"}\nin["t"s]";
  15. }
复制代码
发表于 2016-8-22 23:51:21 | 显示全部楼层
gawk 一行流:
  1. echo abcdeABCDE@#$ | gawk -F "" "{t1=systime();n=0;while(n<NF){n++;a[$n]++};for(i in a)JSON=JSON", '"i"': "a[i];t2=systime();t=t2-t1;print "{" substr(JSON,2) "}\nin["t"s]"}"
复制代码
发表于 2016-8-23 07:37:54 | 显示全部楼层
处理10行和处理1000行并没有什么区别,结果还是一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:49 , Processed in 0.017562 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表