『算法』.Net 字符串计算算法
转载请标明:舒小龙 http://www.cnblogs.com/shuxiaolong/articles/2901784.html
什么都不说,直接贴测试类代码:
1 [Test] 2 public static void TestCompute() 3 { 4 const bool result = 12 + 13 == 14 + 11; 5 Console.WriteLine(result); 6 7 //这个作为 预运算,作为加载 类,函数 的.Net 底层开销——不计算在执行时间内 8 string none = ComputeHelper.Compute("1+(1+1)").Value + "\r\n"; 9 Console.WriteLine("预运算: " + none); 10 11 12 DateTime dt1 = DateTime.Now; 13 string sTemp = string.Empty; 14 15 sTemp += ComputeHelper.Compute("(2+8)*(1+2+77+(12+8))").Value + "\r\n"; 16 sTemp += ComputeHelper.Compute("345*657").Value + "\r\n"; 17 sTemp += ComputeHelper.Compute("2+(235*(2+3))").Value + "\r\n"; 18 sTemp += ComputeHelper.Compute("123+65+234+132+432").Value + "\r\n"; 19 sTemp += ComputeHelper.Compute("1+1+1+1+1").Value + "\r\n"; 20 sTemp += ComputeHelper.Compute("123*654*907").Value + "\r\n"; 21 sTemp += ComputeHelper.Compute("(1234+987)*765").Value + "\r\n"; 22 sTemp += ComputeHelper.Compute("7868*989+5678").Value + "\r\n"; 23 sTemp += ComputeHelper.Compute("1234*546").Value + "\r\n"; 24 sTemp += ComputeHelper.Compute("(122+5654)*(2+976)").Value + "\r\n"; 25 sTemp += ComputeHelper.Compute("100-50+50-50").Value + "\r\n"; 26 sTemp += ComputeHelper.Compute("False?111:222").Value + "\r\n"; 27 sTemp += ComputeHelper.Compute("11111===11111").Value + "\r\n"; 28 sTemp += ComputeHelper.Compute("(11111===2222)?111:222").Value + "\r\n"; 29 sTemp += ComputeHelper.Compute("10-1+2-3+4-5+6").Value + "\r\n"; 30 sTemp += ComputeHelper.Compute("10-1*2-3*4-5/6").Value + "\r\n"; 31 sTemp += ComputeHelper.Compute("10-1*2-3*4-5/6").Value + "\r\n"; 32 sTemp += ComputeHelper.Compute("\"QWERTYUIOP{}:\" LIKE \"%ERT%U%\"").Value + "\r\n"; 33 sTemp += ComputeHelper.Compute("(\"QWERTYUIOP{}:\" LIKE \"%ERT%U\")?1111+1111:2222+2222").Value + "\r\n"; 34 sTemp += ComputeHelper.Compute("-2+5*(-2+7)").Value + "\r\n"; 35 sTemp += ComputeHelper.Compute("(REPLACE(REPLACE(\"AAAAAAAAKKK\",\"K\",\"M\"),\"A\",\"B\") == \"BBBBBBBBMMM\")?\"HHHHHHHHH\":\"IIIIIIIIII\"").Value + "\r\n"; 36 sTemp += ComputeHelper.Compute("3^4").Value + "\r\n"; 37 sTemp += ComputeHelper.Compute("81^(1/4)").Value + "\r\n"; 38 39 DateTime dt2 = DateTime.Now; 40 41 Console.WriteLine(sTemp + "计算时间:" + (dt2 - dt1).TotalMilliseconds); 42 }
运行结果:
True 预运算: 31000 226665 1177 986 5 72960894 1699065 7787130 673764 5648928 50 222 True 222 13 -4.83333333333333 -4.83333333333333 True 4444 23 HHHHHHHHH 81 3 计算时间:9.0006 (毫秒)
------------------------------------------------------------------------------------
1 [Test] 2 public void TestComputeBooleanExpres() 3 { 4 string none = ComputeHelper.ComputeBoolean("True AND False OR True").ToString(); 5 string none2 = ComputeHelper.ComputeBoolean("((REPLACE(\"CCC\",\"A\",\"B\")==\"BBB\"?200:100)>150)").ToString(); 6 Console.WriteLine("预运算: " + none + " " + none2); 7 DateTime dt1 = DateTime.Now; 8 string sTemp = string.Empty; 9 10 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\"") + "\r\n"; 11 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 300>100") + "\r\n"; 12 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 50>100") + "\r\n"; 13 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>=100") + "\r\n"; 14 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>100") + "\r\n"; 15 sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" OR 100>=100 OR \"错误\"") + "\r\n"; 16 //sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>=100 AND \"错误\"") + "\r\n"; 17 sTemp += ComputeHelper.ComputeBoolean("(True OR \"错误\") AND (100>200 AND 300>100)") + "\r\n"; 18 sTemp += ComputeHelper.ComputeBoolean("(300>200 OR \"错误\") AND ((REPLACE(\"AAA\",\"A\",\"B\")==\"BBB\"?200:100)>150)") + "\r\n"; 19 20 21 DateTime dt2 = DateTime.Now; 22 23 Console.WriteLine(sTemp + "计算时间:" + (dt2 - dt1).TotalMilliseconds); 24 Console.ReadLine(); 25 26 }
运行结果:
预运算: True False True True False True False True False True 计算时间:3.0002
------------------------------------------------------------------------------------
1 [Test] 2 public void TestComputeBooleanList() 3 { 4 List<UserInfo> list = new List<UserInfo>(); 5 List<UserInfo> listUser = GetUserInfo(); 6 DateTime dt1 = DateTime.Now; 7 ComputeExecuter executer = new ComputeExecuter("UserAge>=20 AND LEN(UserName)>=3 AND REPLACE(UserName,\"舒\",\"龙\") LIKE \"龙%龙\"", true, typeof(UserInfo), string.Empty, true, false, true); 8 foreach (UserInfo user in listUser) 9 { 10 bool result = executer.ComputeBoolean(user); 11 if (result) 12 list.Add(user); 13 } 14 DateTime dt2 = DateTime.Now; 15 string resultStr = GetUserInfos(list); 16 Console.WriteLine(resultStr); 17 Console.WriteLine("预运算:" + (dt2 - dt1).TotalMilliseconds); 18 19 list.Clear(); 20 dt1 = DateTime.Now; 21 executer = new ComputeExecuter("UserClassName == \"Y2T01\"", true, typeof(UserInfo), string.Empty, true, false, true); 22 foreach (UserInfo user in listUser) 23 { 24 bool result = executer.ComputeBoolean(user); 25 if (result) 26 list.Add(user); 27 } 28 dt2 = DateTime.Now; 29 resultStr = GetUserInfos(list); 30 Console.WriteLine(resultStr); 31 Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds); 32 33 list.Clear(); 34 executer = new ComputeExecuter("UserAge>=@UserAge AND UserName LIKE @UserName", true, typeof(UserInfo), string.Empty, true, false, true); 35 dt1 = DateTime.Now; 36 IgnoreHashtable ht = new IgnoreHashtable {{"@UserAge", 20}, {"@UserName", "%舒%"}}; 37 foreach (UserInfo user in listUser) 38 { 39 bool result = executer.ComputeBoolean(user, ht); 40 if (result) 41 list.Add(user); 42 } 43 dt2 = DateTime.Now; 44 resultStr = GetUserInfos(list); 45 Console.WriteLine(resultStr); 46 Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds); 47 48 list.Clear(); 49 dt1 = DateTime.Now; 50 ht = new IgnoreHashtable { { "@UserAge", 18 }, { "@UserName", 3 } }; 51 foreach (UserInfo user in listUser) 52 { 53 bool result = executer.ComputeBoolean(user, ht); 54 if (result) 55 list.Add(user); 56 } 57 dt2 = DateTime.Now; 58 resultStr = GetUserInfos(list); 59 Console.WriteLine(resultStr); 60 Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds); 61 62 63 } 64 65 66 public static List<UserInfo> GetUserInfo() 67 { 68 List<UserInfo> list = new List<UserInfo>() 69 { 70 new UserInfo("舒小龙","Y2T01001",20,Convert.ToDateTime("1989-11-27"),"Y2T01","应城市",5500),72 new UserInfo("陈雪琴","Y2T03002",19,Convert.ToDateTime("1990-09-01"),"Y2T03","孝感市",6000), 73 new UserInfo("尹华伟","Y2T04003",19,Convert.ToDateTime("1990-11-01"),"Y2T03","孝感市",12000), 74 new UserInfo("舒珊","G2T09001",18,Convert.ToDateTime("1992-09-18"),"G2T09","应城市",200), 75 new UserInfo("无窗帘","G2T09002",18,Convert.ToDateTime("1992-10-02"),"G2T09","孝昌",-300), 76 new UserInfo("吴文","G2T05001",18,Convert.ToDateTime("1991-02-03"),"G2T05","安陆市",4000), 77 new UserInfo("李欢","XG009001",20,Convert.ToDateTime("1990-01-01"),"XG009","孝感市",7000), 78 new UserInfo("HYS","NC008001",19,Convert.ToDateTime("1990-07-19"),"NC008","应城市",500), 79 new UserInfo("毛三","Y2T01001",20,Convert.ToDateTime("1989-01-01"),"Y2T01","应城市",0), 80 81 }; 82 return list; 83 } 84 85 public static string GetUserInfos(IList<UserInfo> list) 86 { 87 if (list == null || list.Count <= 0) return string.Empty; 88 StringBuilder sb = new StringBuilder(); 89 foreach (UserInfo user in list) 90 sb.AppendLine(user.ToString()); 91 return sb.ToString(); 92 }
运行结果:
舒小龙 Y2T01001 20 1989-11-27 00:00:00 Y2T01 应城市 5500预运算:836.0478 舒小龙 Y2T01001 20 1989-11-27 00:00:00 Y2T01 应城市 5500 毛三 Y2T01001 20 1989-01-01 00:00:00 Y2T01 应城市 0正式运算:2.0001正式运算:3.0002正式运算:1
转载于:https://www.cnblogs.com/shuxiaolong/archive/2013/02/24/2901784.html
『算法』.Net 字符串计算算法相关推荐
- 『开源』一个简单的 字符串计算 算法开源
算法开发原因: 自己一直在 配置化编程 方面努力,希望 项目复杂的功能可以用 简单的 配置来完成: 于是 在自己的网站中,使用了一个自己写的 数据库框架,为了给框架提速,于是就 想将 少于 5000 ...
- 拼写单词 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符
力扣1160. 拼写单词 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars. 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字 ...
- 大数据算法系列10:字符串检验算法
文章目录 一. 字符串检验算法 二. 练习 2.1 面试题(输出字符串的排列组合) 2.2 POJ2262(求奇质素之和) 2.3 开门游戏 2.4 Uva106(费马大定律) 2.5 POJ3744 ...
- 『ML』利用K-Means聚类算法对未标注数据分组——《机器学习实战》学习笔记(Ch10)
本节用Python实现K-Means算法,对未标注的数据进行聚类. 在做完聚类后,如何对于聚类结果进行评估?请看 用Python实现聚类效果的评估(轮廓系数.互信息) 导航 K-Means简介 代码实 ...
- hmacsha256是对称算法吗_HMAC-SHA256签名计算算法
我正在尝试使用HMAC-SHA256算法创建签名,这是我的代码.我正在使用美国ASCII编码. final Charset asciiCs = Charset.forName("US-ASC ...
- Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...
- C++反转字符串的算法(附完整源码)
C++反转字符串的算法 C++反转字符串的算法完整源码(定义,实现,main函数测试) C++反转字符串的算法完整源码(定义,实现,main函数测试) #include<iostream> ...
- java中怎么计算算法的时间复杂度_算法的时间复杂度和空间复杂度计算
一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度.记作:T(n) ...
- [转]文本相似性算法:simhash/minhash/余弦算法
数据挖掘之lsh(局部敏感hash) minhash.simhash 在项目中碰到这样的问题: 互联网用户每天会访问很多的网页,假设两个用户访问过相同的网页,说明两个用户相似,相同的网页越多,用户相似 ...
最新文章
- 想学Python?那这套教程再适合你不过了!!
- PNAS:利用long-read生成个人转录组
- 关于pycharm右键只能选择run Unit不能直接run的解决方法
- 谷歌退出后百度首发财报 李彦宏称获益不少(转)
- 进入Windows的世界
- 两年前觉得这很难那很难的人,现在觉得更难了
- 前端学习(2464):vue中 slot
- 深入浅出VC++串口编程--基于控件
- C# 对称算法,加密解密类
- 深度学习超参数简单理解:learning rate,weight decay和momentum
- python学习手册笔记——29.运算符重载
- c语言程序游戏例子,C语言游戏编写例子.doc
- Win7 配置 Git 客户端 图文详解
- 华硕K43TK光驱改硬盘教程
- 精灵图案例-拼出自己名字
- 重启防火墙(iptables)命令#service iptable restart失效
- 哈希表Hash与JAVA集合类Map及其方法put()、getOrDefault()、keySet()、get()
- Qt - 驾校科目-考试系统-窗口交互
- Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”
- 我的手工制作PCB板
热门文章
- 基于ADuC848的智能电压监视仪
- 掌财社:股票交割日是什么意思?
- 2014 计算机一级 试题,2014年全国计算机一级考试选择题试题与详细答案
- 新装EVE-NG使用wireshark出现connection abandoned
- 公里与英里的换算c语言函数_一万公里是极限吗?全合成机油最多能跑多远?...
- 怎么创建html元素节点,怎么用DOM创建a节点
- visual assist x_1.2kg华硕灵耀X逍遥体验:4K OLED翻转屏+11代i7处理器
- 调试JavaScript/VB Script脚本程序(Wscript篇)
- 手机应用推广必备发布渠道【安卓渠道汇】
- 关于Symantec(赛门铁克)认证服务