<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_This is where I belong！</title><subtitle type="text">——This is something I will pursue for the rest of my life.</subtitle><id>http://feed.cnblogs.com/blog/u/67698/rss</id><updated>2012-03-19T11:12:56Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/67698/rss"/><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/12/06/sort-alpha.html</id><title type="text">帮GF解道笔试题</title><summary type="text">话说今天GF去参加了某公司笔试题，题目就是传说中的字符串排序，这里偶也总结了一些方法，留作参考吧。 在动手之前上两个个人的Helper片段： 1 public class CompareHelper&lt;T&gt; where T : IComparable&lt;T&gt; 2 { 3 public static bool AreEqual(T left, T right) 4 { 5 return left.CompareTo(right) == 0; 6 } 7 8 public static bool LessThan(T left, T right)...</summary><published>2011-12-06T15:16:00Z</published><updated>2011-12-06T15:16:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/12/06/sort-alpha.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/12/06/sort-alpha.html"/><content type="html">&lt;p&gt;话说今天GF去参加了某公司笔试题，题目就是传说中的字符串排序，这里偶也总结了一些方法，留作参考吧。&lt;/p&gt;&lt;p&gt;在动手之前上两个个人的Helper片段：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; CompareHelper&amp;lt;T&amp;gt; &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; T : IComparable&amp;lt;T&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; AreEqual(T left, T right)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left.CompareTo(right) == &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; LessThan(T left, T right)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left.CompareTo(right) &amp;lt; &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; LessThanEqual(T left, T right)&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left.CompareTo(right) &amp;lt;= &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; GreaterThan(T left, T right)&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left.CompareTo(right) &amp;gt; &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; GreaterThanEqual(T left, T right)&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left.CompareTo(right) &amp;gt;= &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; GenericHelper&lt;br /&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Enumerate&amp;lt;T&amp;gt;(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; collection, Action&amp;lt;T&amp;gt; doIt)&lt;br /&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (T item &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; collection)&lt;br /&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;             doIt(item);&lt;br /&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;38&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;随后，控制台的程序如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; s = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;IAmMyx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;内置方法&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;[] arr = s.ToCharArray();&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             arr = arr.OrderBy(a =&amp;gt; a).ToArray();&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             arr.Enumerate(a =&amp;gt; Console.Write(a));&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             Console.WriteLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;排序算法（最亲切的冒泡排序，其他的就不上了）&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;[] arr2 = s.ToCharArray();&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; i &amp;lt;= arr2.Length - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;; i++)&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; j = i + &lt;span style="color: #800080;"&gt;1&lt;/span&gt;; j &amp;lt;= arr.Length - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;; j++)&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;                 {&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (CompareHelper&amp;lt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&amp;gt;.GreaterThan(arr2[j - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;], arr2[j]))&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;                     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;                         Swap(&lt;span style="color: #0000ff;"&gt;ref&lt;/span&gt; arr2[j], &lt;span style="color: #0000ff;"&gt;ref&lt;/span&gt; arr2[j - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;]);&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;                     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;                 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;             arr2.Enumerate(a =&amp;gt; Console.Write(a));&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;             Console.Read();&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Swap&amp;lt;T&amp;gt;(&lt;span style="color: #0000ff;"&gt;ref&lt;/span&gt; T x, &lt;span style="color: #0000ff;"&gt;ref&lt;/span&gt; T y)&lt;br /&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;             T temp = x;&lt;br /&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;             x = y;&lt;br /&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;             y = temp;&lt;br /&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;     }&lt;/div&gt;&lt;p&gt;&lt;br /&gt;客户端的方法，我也总结了两种。&lt;/p&gt;&lt;p&gt;首先是可以通过string的localeCompare方法进行比较，如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     String.prototype.before = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(str) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.localeCompare(str) &amp;lt;= -1;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     };&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     String.prototype.after = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(str) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.localeCompare(str) &amp;gt;= 1;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     };&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     String.prototype.equal = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(str) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.localeCompare(str) == 0;&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     };&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;     document.write("I".before("A") + '&amp;lt;br/&amp;gt;'); &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;false&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;     document.write("I".before("i") + '&amp;lt;br/&amp;gt;'); &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;true&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     document.write("I".before("Z") + '&amp;lt;br/&amp;gt;'); &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;true&lt;/span&gt;&lt;/div&gt;&lt;p&gt;所以利用sort方法我们可以实现排序，这里提供一个个人类库中的扩展方法，如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; compareAsc(num1, num2) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; num1.after(num2);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     };&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; compareDesc(num1, num2) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; num2.after(num1);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     };&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     Array.prototype.sortArr = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(bIsDesc) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (bIsDesc) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.sort(compareDesc);&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.sort(compareAsc);&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.join(',');&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     };&lt;/div&gt;&lt;p&gt;由上可以将数组进行升序或降序排列，使用方法如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; s = ['I', 'A', 'm', 'M', 'y', 'x'];&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt;     s = s.sortArr();&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt;     document.write(s + '&amp;lt;br/&amp;gt;');&lt;/div&gt;&lt;p&gt;&lt;br /&gt;此外，个人还收集了一个强悍的正则表达式排序法，分享如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; str = "15,18,16,20.6,5,8.1,2,4.9,13.21,24,22";&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     document.write&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     (&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;         (str + ",").match(/\d+[.,]/g)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;                    .sort(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(x, y) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;                        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; parseInt(x) - parseInt(y)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;                    })&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;                    .join("")&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;                    .substr(0, str.length);&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     )&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="text-align: center; margin: 20px auto 20px 30px; width: 550px; height: 55px; border: red 1px dashed;"&gt;快速评论通道：&lt;br /&gt;&lt;div style="padding-left: 20px;"&gt;&lt;input style="background-color: green;" type="button" name="c1" value="支持" /&gt; &lt;input style="background-color: yellow;" type="button" name="c2" value="一般" /&gt; &lt;input style="background-color: red;" type="button" name="c3" value="差劲" /&gt; &lt;input style="background-color: #999;" type="button" name="c4" value="飘过" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2278616.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/12/06/sort-alpha.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/11/13/2247705.html</id><title type="text">求一个字符串中所有字符出现的次数</title><summary type="text">如题是今天群里讨论的一个小话题，这里将讨论的结果作个简单的备份吧。1 var s = "asdafghfghjgtyurygsgf";2 var o = {};3 s.replace(/./g, function (c) {4 o[c] ? (o[c]++) : o[c] = 15 });6 for (var i in o) {7 document.write('字符：' + i + ' 次数：' + o[i] + '&lt;br/&gt;');8 } 1 var s = "asdafghfghjgtyurygsgf</summary><published>2011-11-13T15:57:00Z</published><updated>2011-11-13T15:57:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/11/13/2247705.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/11/13/2247705.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如题是今天群里讨论的一个小话题，这里将讨论的结果作个简单的备份吧。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; s = "asdafghfghjgtyurygsgf";&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; o = {};&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; s.replace(/./g, &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (c) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt;     o[c] ? (o[c]++) : o[c] = 1&lt;br /&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; });&lt;br /&gt;&lt;span style="color: #008080;"&gt;6&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; o) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;7&lt;/span&gt;     document.write('字符：' + i + ' 次数：' + o[i] + '&amp;lt;br/&amp;gt;');&lt;br /&gt;&lt;span style="color: #008080;"&gt;8&lt;/span&gt; }&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; s = "asdafghfghjgtyurygsgf";&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; str = s.split('');&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; arr = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Array();&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; str2 = '';&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; str) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (str2.indexOf(str[i]) != -1) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;         arr[str[i]] += 1;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     } &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;         arr[str[i]] = 1;&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         str2 += str[i];&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; arr) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     document.writeln(i + '的个数为:' + arr[i] + '&amp;lt;br/&amp;gt;');&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; }&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; str = 'asdafghfghjgtyurygsgf', arr = str.split('');&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i, j, k, l, c, map = {};&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (i = 0, j = arr.length; i &amp;lt; j; i++) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     c = arr[i];&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     map[c] = 1;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (k = i + 1; k &amp;lt; j; k++) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (c == arr[k]) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             map[c]++;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             j = j - 1;&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (l = k; l &amp;lt; j; l++) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;                 arr[l] = arr[l + 1];&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             k--;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; s = '', p;&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (p &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; map) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (map.hasOwnProperty(p)) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;         s += p + ' =&amp;gt; ' + map[p] + '\n';&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; alert(s);&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; s = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;asdafghfghjgtyurygsgf&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;[] arr = s.ToCharArray();&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&amp;gt; dict = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt; c &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; arr)&lt;br /&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;6&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!dict.ContainsKey(c)) dict.Add(c, &lt;span style="color: #800080;"&gt;1&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt;7&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; ++dict[c];&lt;br /&gt;&lt;span style="color: #008080;"&gt;8&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;9&lt;/span&gt; dict.Enumerate(a =&amp;gt; Console.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;字符：&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; + a.Key.ToString() + &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\b次数：&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; + a.Value.ToString()));&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; GenericHelper&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;         &lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;         &lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 遍历集合并执行Action委托&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         &lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Enumerate&amp;lt;T&amp;gt;(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; collection, Action&amp;lt;T&amp;gt; doIt)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (T item &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; collection)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;                 doIt(item);&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2247705.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/11/13/2247705.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/10/21/interview-questions-collection.html</id><title type="text">各大公司（Google，Microsoft，Baidu， Microsoft Research Asia etc.）实习生面试题总汇</title><summary type="text">1.把二元查找树转变成排序的双向链表（树）题目：输入一棵二元查找树，将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点，只调整指针的指向。 10 / \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树 节点的数据结构如下：struct BSTreeNode{int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node};2.设计包含min函数</summary><published>2011-10-21T15:12:00Z</published><updated>2011-10-21T15:12:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/10/21/interview-questions-collection.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/10/21/interview-questions-collection.html"/><content type="html">&lt;p&gt;1.把二元查找树转变成排序的双向链表（树）&lt;/p&gt;&lt;p&gt;&amp;nbsp;题目：&lt;/p&gt;&lt;p&gt;输入一棵二元查找树，将该二元查找树转换成一个排序的双向链表。&lt;/p&gt;&lt;p&gt;要求不能创建任何新的结点，只调整指针的指向。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 10&lt;/p&gt;&lt;p&gt;&amp;nbsp; / \&lt;/p&gt;&lt;p&gt;6&amp;nbsp; 14&lt;/p&gt;&lt;p&gt;&amp;nbsp;/ \ / \&lt;/p&gt;&lt;p&gt;4&amp;nbsp; 8 12 16&lt;/p&gt;&lt;p&gt;&amp;nbsp;转换成双向链表&lt;/p&gt;&lt;p&gt;4=6=8=10=12=14=16。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;首先我们定义的二元查找树 节点的数据结构如下：&lt;/p&gt;&lt;p&gt;struct BSTreeNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nValue; // value of node&lt;/p&gt;&lt;p&gt;&amp;nbsp; BSTreeNode *m_pLeft; // left child of node&lt;/p&gt;&lt;p&gt;&amp;nbsp; BSTreeNode *m_pRight; // right child of node&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.设计包含min函数的栈（栈）&lt;/p&gt;&lt;p&gt;定义栈的数据结构，要求添加一个min函数，能够得到栈的最小元素。&lt;/p&gt;&lt;p&gt;要求函数min、push以及pop的时间复杂度都是O(1)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3.求子数组的最大和（数组）&lt;/p&gt;&lt;p&gt;题目：&lt;/p&gt;&lt;p&gt;输入一个整形数组，数组里有正数也有负数。&lt;/p&gt;&lt;p&gt;数组中连续的一个或多个整数组成一个子数组，每个子数组都有一个和。&lt;/p&gt;&lt;p&gt;求所有子数组的和的最大值。要求时间复杂度为O(n)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5，和最大的子数组为3, 10, -4, 7, 2，&lt;/p&gt;&lt;p&gt;因此输出为该子数组的和18。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4.在二元树中找出和为某一值的所有路径（树）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;题目：输入一个整数和一棵二元树。&lt;/p&gt;&lt;p&gt;从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。&lt;/p&gt;&lt;p&gt;打印出和与输入整数相等的所有路径。&lt;/p&gt;&lt;p&gt;例如 输入整数22和如下二元树&lt;/p&gt;&lt;p&gt;&amp;nbsp; 10&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; / \&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;5&amp;nbsp; 12&lt;/p&gt;&lt;p&gt;&amp;nbsp;/&amp;nbsp;&amp;nbsp; \&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/p&gt;&lt;p&gt;则打印出两条路径：10, 12和10, 5, 7。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;二元树节点的数据结构定义为：&lt;/p&gt;&lt;p&gt;struct BinaryTreeNode // a node in the binary tree&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nValue; // value of node&lt;/p&gt;&lt;p&gt;BinaryTreeNode *m_pLeft; // left child of node&lt;/p&gt;&lt;p&gt;BinaryTreeNode *m_pRight; // right child of node&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;5.查找最小的k个元素（数组）&lt;/p&gt;&lt;p&gt;题目：输入n个整数，输出其中最小的k个。&lt;/p&gt;&lt;p&gt;例如输入1，2，3，4，5，6，7和8这8个数字，则最小的4个数字为1，2，3和4。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第6题（数组）&lt;/p&gt;&lt;p&gt;腾讯面试题：&lt;/p&gt;&lt;p&gt;给你10分钟时间，根据上排给出十个数，在其下排填出对应的十个数&lt;/p&gt;&lt;p&gt;要求下排每个数都是先前上排那十个数在下排出现的次数。&lt;/p&gt;&lt;p&gt;上排的十个数如下：&lt;/p&gt;&lt;p&gt;【0，1，2，3，4，5，6，7，8，9】&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;举一个例子，&lt;/p&gt;&lt;p&gt;数值: 0,1,2,3,4,5,6,7,8,9&lt;/p&gt;&lt;p&gt;分配: 6,2,1,0,0,0,1,0,0,0&lt;/p&gt;&lt;p&gt;0在下排出现了6次，1在下排出现了2次，&lt;/p&gt;&lt;p&gt;2在下排出现了1次，3在下排出现了0次....&lt;/p&gt;&lt;p&gt;以此类推..&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第7题（链表）&lt;/p&gt;&lt;p&gt;微软亚院之编程判断俩个链表是否相交&lt;/p&gt;&lt;p&gt;给出俩个单向链表的头指针，比如h1，h2，判断这俩个链表是否相交。&lt;/p&gt;&lt;p&gt;为了简化问题，我们假设俩个链表均不带环。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;问题扩展：&lt;/p&gt;&lt;p&gt;1.如果链表可能有环列?&lt;/p&gt;&lt;p&gt;2.如果需要求出俩个链表相交的第一个节点列?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第8题（算法）&lt;/p&gt;&lt;p&gt;此贴选一些比较怪的题，，由于其中题目本身与算法关系不大，仅考考思维。特此并作一题。&lt;/p&gt;&lt;p&gt;1.有两个房间，一间房里有三盏灯，另一间房有控制着三盏灯的三个开关，这两个房间是 分割开的，从一间里不能看到另一间的情况。现在要求受训者分别进这两房间一次，然后判断出这三盏灯分别是由哪个开关控制的。有什么办法呢？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.你让一些人为你工作了七天，你要用一根金条作为报酬。金条被分成七小块，每天给出一块。&lt;/p&gt;&lt;p&gt;如果你只能将金条切割两次，你怎样分给这些工人?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3.　★用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。&lt;/p&gt;&lt;p&gt;★用一种算法在一个循环的链接表里插入一个节点，但不得穿越链接表。&lt;/p&gt;&lt;p&gt;★用一种算法整理一个数组。你为什么选择这种方法?&lt;/p&gt;&lt;p&gt;★用一种算法使通用字符串相匹配。&lt;/p&gt;&lt;p&gt;★颠倒一个字符串。优化速度。优化空间。&lt;/p&gt;&lt;p&gt;★颠倒一个句子中的词的顺序，比如将&amp;ldquo;我叫克丽丝&amp;rdquo;转换为&amp;ldquo;克丽丝叫我&amp;rdquo;，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;实现速度最快，移动最少。&lt;/p&gt;&lt;p&gt;★找到一个子字符串。优化速度。优化空间。&lt;/p&gt;&lt;p&gt;★比较两个字符串，用O(n)时间和恒量空间。&lt;/p&gt;&lt;p&gt;★假设你有一个用1001个整数组成的数组，这些整数是任意排列的，但是你知道所有的整数都在1到1000(包括1000)之间。此外，除一个数字出现两次外，其他所有数字只出现一次。假设你只能对这个数组做一次处理，用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式，那么你能找到不用这种方式的算法吗?&lt;/p&gt;&lt;p&gt;★不用乘法或加法增加8倍。现在用同样的方法增加7倍。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第9题（树）&lt;/p&gt;&lt;p&gt;判断整数序列是不是二元查找树的后序遍历结果&lt;/p&gt;&lt;p&gt;题目：输入一个整数数组，判断该数组是不是某二元查找树的后序遍历的结果。&lt;/p&gt;&lt;p&gt;如果是返回true，否则返回false。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入5、7、6、9、11、10、8，由于这一整数序列是如下树的后序遍历结果：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp; \&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; / \&amp;nbsp; / \&lt;/p&gt;&lt;p&gt;5&amp;nbsp; 7 9&amp;nbsp; 11&lt;/p&gt;&lt;p&gt;因此返回true。&lt;/p&gt;&lt;p&gt;如果输入7、4、6、5，没有哪棵树的后序遍历的结果是这个序列，因此返回false。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第10题（字符串）&lt;/p&gt;&lt;p&gt;翻转句子中单词的顺序。&lt;/p&gt;&lt;p&gt;题目：输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;句子中单词以空格符隔开。为简单起见，标点符号和普通字母一样处理。&lt;/p&gt;&lt;p&gt;例如输入&amp;ldquo;I am a student.&amp;rdquo;，则输出&amp;ldquo;student. a am I&amp;rdquo;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第11题（树）&lt;/p&gt;&lt;p&gt;求二叉树中节点的最大距离...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如果我们把二叉树看成一个图，父子节点之间的连线看成是双向的，&lt;/p&gt;&lt;p&gt;我们姑且定义"距离"为两节点之间边的个数。&lt;/p&gt;&lt;p&gt;写一个程序，&lt;/p&gt;&lt;p&gt;求一棵二叉树中相距最远的两个节点之间的距离。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第12题（语法）&lt;/p&gt;&lt;p&gt;题目：求1+2+&amp;hellip;+n，&lt;/p&gt;&lt;p&gt;要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句（A?B:C）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第13题（链表）：&lt;/p&gt;&lt;p&gt;题目：输入一个单向链表，输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。&lt;/p&gt;&lt;p&gt;链表结点定义如下：&amp;nbsp;&lt;/p&gt;&lt;p&gt;struct ListNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nKey;&lt;/p&gt;&lt;p&gt;&amp;nbsp; ListNode* m_pNext;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第14题（数组）：&lt;/p&gt;&lt;p&gt;题目：输入一个已经按升序排序过的数组和一个数字，&lt;/p&gt;&lt;p&gt;在数组中查找两个数，使得它们的和正好是输入的那个数字。&lt;/p&gt;&lt;p&gt;要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字，输出任意一对即可。&lt;/p&gt;&lt;p&gt;例如输入数组1、2、4、7、11、15和数字15。由于4+11=15，因此输出4和11。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第15题（树）：&lt;/p&gt;&lt;p&gt;题目：输入一颗二元查找树，将该树转换为它的镜像，&lt;/p&gt;&lt;p&gt;即在转换后的二元查找树中，左子树的结点都大于右子树的结点。&lt;/p&gt;&lt;p&gt;用递归和循环两种方法完成树的镜像转换。&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入：&lt;/p&gt;&lt;p&gt;&amp;nbsp; 8&lt;/p&gt;&lt;p&gt;&amp;nbsp; / \&lt;/p&gt;&lt;p&gt;&amp;nbsp; 6 10&lt;/p&gt;&lt;p&gt;&amp;nbsp;/\ /\&lt;/p&gt;&lt;p&gt;5 7 9 11&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;输出：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 8&lt;/p&gt;&lt;p&gt;&amp;nbsp; / \&lt;/p&gt;&lt;p&gt;&amp;nbsp;10 6&lt;/p&gt;&lt;p&gt;&amp;nbsp;/\ /\&lt;/p&gt;&lt;p&gt;11 9 7 5&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;定义二元查找树的结点为：&lt;/p&gt;&lt;p&gt;struct BSTreeNode // a node in the binary search tree (BST)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nValue; // value of node&lt;/p&gt;&lt;p&gt;&amp;nbsp; BSTreeNode *m_pLeft; // left child of node&lt;/p&gt;&lt;p&gt;&amp;nbsp; BSTreeNode *m_pRight; // right child of node&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第16题（树）：&lt;/p&gt;&lt;p&gt;题目（微软）：&lt;/p&gt;&lt;p&gt;输入一颗二元树，从上往下按层打印树的每个结点，同一层中按照从左往右的顺序打印。&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 8&lt;/p&gt;&lt;p&gt;&amp;nbsp; / \&lt;/p&gt;&lt;p&gt;&amp;nbsp;6 10&lt;/p&gt;&lt;p&gt;/ \ / \&lt;/p&gt;&lt;p&gt;5 7 9 11&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;输出8 6 10 5 7 9 11。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第17题（字符串）：&lt;/p&gt;&lt;p&gt;题目：在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff，则输出b。&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：这道题是2006年google的一道笔试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第18题（数组）：&lt;/p&gt;&lt;p&gt;题目：n个数字（0,1,&amp;hellip;,n-1）形成一个圆圈，从数字0开始，&lt;/p&gt;&lt;p&gt;每次从这个圆圈中删除第m个数字（第一个为当前数字本身，第二个为当前数字的下一个数字）。&lt;/p&gt;&lt;p&gt;当一个数字删除后，从被删除数字的下一个继续删除第m个数字。&lt;/p&gt;&lt;p&gt;求出在这个圆圈中剩下的最后一个数字。&lt;/p&gt;&lt;p&gt;July：我想，这个题目，不少人已经 见识过了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第19题（数组、递归）：&lt;/p&gt;&lt;p&gt;题目：定义Fibonacci数列如下：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; / 0 n=0&lt;/p&gt;&lt;p&gt;f(n)= 1 n=1&lt;/p&gt;&lt;p&gt;&amp;nbsp; \ f(n-1)+f(n-2) n=2&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;输入n，用最快的方法求该数列的第n项。&lt;/p&gt;&lt;p&gt;分析：在很多C语言教科书中讲到递归函数的时候，都会用Fibonacci作为例子。&lt;/p&gt;&lt;p&gt;因此很多程序员对这道题的递归解法非常熟悉，但....呵呵，你知道的。。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第20题（字符串）：&lt;/p&gt;&lt;p&gt;题目：输入一个表示整数的字符串，把该字符串转换成整数并输出。&lt;/p&gt;&lt;p&gt;例如输入字符串"345"，则输出整数345。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第21题（数组）&lt;/p&gt;&lt;p&gt;2010年中兴面试题&lt;/p&gt;&lt;p&gt;编程求解：&lt;/p&gt;&lt;p&gt;输入两个整数 n 和 m，从数列1，2，3.......n 中 随意取几个数,&lt;/p&gt;&lt;p&gt;使其和等于 m ,要求将其中所有的可能组合列出来.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第22题（推理）：&lt;/p&gt;&lt;p&gt;有4张红色的牌和4张蓝色的牌，主持人先拿任意两张，再分别在A、B、C三人额头上贴任意两张牌，&lt;/p&gt;&lt;p&gt;A、B、C三人都可以看见其余两人额头上的牌，看完后让他们猜自己额头上是什么颜色的牌，&lt;/p&gt;&lt;p&gt;A说不知道，B说不知道，C说不知道，然后A说知道了。&lt;/p&gt;&lt;p&gt;请教如何推理，A是怎么知道的。&lt;/p&gt;&lt;p&gt;如果用程序，又怎么实现呢？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第23题（算法）：&lt;/p&gt;&lt;p&gt;用最简单，最快速的方法计算出下面这个圆形是否和正方形相交。"&amp;nbsp;&lt;/p&gt;&lt;p&gt;3D坐标系 原点(0.0,0.0,0.0)&lt;/p&gt;&lt;p&gt;圆形:&lt;/p&gt;&lt;p&gt;半径r = 3.0&lt;/p&gt;&lt;p&gt;圆心o = (*.*, 0.0, *.*)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;正方形:&lt;/p&gt;&lt;p&gt;4个角坐标;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1:(*.*, 0.0, *.*)&lt;/p&gt;&lt;p&gt;2:(*.*, 0.0, *.*)&lt;/p&gt;&lt;p&gt;3:(*.*, 0.0, *.*)&lt;/p&gt;&lt;p&gt;4:(*.*, 0.0, *.*)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第24题（链表）：&lt;/p&gt;&lt;p&gt;链表操作，单链表就地逆置，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第25题（字符串）：&lt;/p&gt;&lt;p&gt;写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)&lt;/p&gt;&lt;p&gt;功能：&lt;/p&gt;&lt;p&gt;在字符串中找出连续最长的数字串，并把这个串的长度返回，&lt;/p&gt;&lt;p&gt;并把这个最长数字串付给其中一个函数参数outputstr所指内存。&lt;/p&gt;&lt;p&gt;例如："abcd12345ed125ss123456789"的首地址传给intputstr后，函数将返回9，&lt;/p&gt;&lt;p&gt;outputstr所指的值为123456789&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;26.左旋转字符串（字符串）&lt;/p&gt;&lt;p&gt;题目：&lt;/p&gt;&lt;p&gt;定义字符串的左旋转操作：把字符串前面的若干个字符移动到字符串的尾部。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。&lt;/p&gt;&lt;p&gt;要求时间对长度为n的字符串操作的复杂度为O(n)，辅助内存为O(1)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;27.跳台阶问题（递归）&lt;/p&gt;&lt;p&gt;题目：一个台阶总共有n级，如果一次可以跳1级，也可以跳2级。&lt;/p&gt;&lt;p&gt;求总共有多少总跳法，并分析算法的时间复杂度。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这道题最近经常出现，包括MicroStrategy等比较重视算法的公司&lt;/p&gt;&lt;p&gt;都曾先后选用过个这道题作为面试题或者笔试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;28.整数的二进制表示中1的个数（运算）&lt;/p&gt;&lt;p&gt;题目：输入一个整数，求该整数的二进制表达中有多少个1。&lt;/p&gt;&lt;p&gt;例如输入10，由于其二进制表示为1010，有两个1，因此输出2。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：&lt;/p&gt;&lt;p&gt;这是一道很基本的考查位运算的面试题。&lt;/p&gt;&lt;p&gt;包括微软在内的很多公司都曾采用过这道题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;29.栈的push、pop序列（栈）&lt;/p&gt;&lt;p&gt;题目：输入两个整数序列。其中一个序列表示栈的push顺序，&lt;/p&gt;&lt;p&gt;判断另一个序列有没有可能是对应的pop顺序。&lt;/p&gt;&lt;p&gt;为了简单起见，我们假设push序列的任意两个整数都是不相等的。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;比如输入的push序列是1、2、3、4、5，那么4、5、3、2、1就有可能是一个pop系列。&lt;/p&gt;&lt;p&gt;因为可以有如下的push和pop序列：&lt;/p&gt;&lt;p&gt;push 1，push 2，push 3，push 4，pop，push 5，pop，pop，pop，pop，&lt;/p&gt;&lt;p&gt;这样得到的pop序列就是4、5、3、2、1。&lt;/p&gt;&lt;p&gt;但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;30.在从1到n的正数中1出现的次数（数组）&lt;/p&gt;&lt;p&gt;题目：输入一个整数n，求从1到n这n个整数的十进制表示中1出现的次数。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入12，从1到12这些整数中包含1 的数字有1，10，11和12，1一共出现了5次。&lt;/p&gt;&lt;p&gt;分析：这是一道广为流传的google面试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;31.华为面试题（搜索）：&lt;/p&gt;&lt;p&gt;一类似于蜂窝的结构的图，进行搜索最短路径（要求5分钟）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;32.（数组、规划）&lt;/p&gt;&lt;p&gt;有两个序列a,b，大小都为n,序列元素的值任意整数，无序；&lt;/p&gt;&lt;p&gt;要求：通过交换a,b中的元素，使[序列a元素的和]与[序列b元素的和]之间的差最小。&lt;/p&gt;&lt;p&gt;例如:&amp;nbsp;&lt;/p&gt;&lt;p&gt;var a=[100,99,98,1,2, 3];&lt;/p&gt;&lt;p&gt;var b=[1, 2, 3, 4,5,40];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;33.（字符串）&lt;/p&gt;&lt;p&gt;实现一个挺高级的字符匹配算法：&lt;/p&gt;&lt;p&gt;给一串很长字符串，要求找到符合要求的字符串，例如目的串：123&lt;/p&gt;&lt;p&gt;1******3***2 ,12*****3这些都要找出来&lt;/p&gt;&lt;p&gt;其实就是类似一些和谐系统。。。。。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;34.（队列）&lt;/p&gt;&lt;p&gt;实现一个队列。&lt;/p&gt;&lt;p&gt;队列的应用场景为：&lt;/p&gt;&lt;p&gt;一个生产者线程将int类型的数入列，一个消费者线程将int类型的数出列&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;35.（矩阵）&lt;/p&gt;&lt;p&gt;求一个矩阵中最大的二维矩阵(元素和最大).如:&lt;/p&gt;&lt;p&gt;1 2 0 3 4&lt;/p&gt;&lt;p&gt;2 3 4 5 1&lt;/p&gt;&lt;p&gt;1 1 5 3 0&lt;/p&gt;&lt;p&gt;中最大的是:&lt;/p&gt;&lt;p&gt;4 5&lt;/p&gt;&lt;p&gt;5 3&lt;/p&gt;&lt;p&gt;要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第36题-40题（有些题目搜集于CSDN上的网友，已标明）：&lt;/p&gt;&lt;p&gt;36.引用自网友：longzuo（运算）&lt;/p&gt;&lt;p&gt;谷歌笔试：&lt;/p&gt;&lt;p&gt;n支队伍比赛，分别编号为0，1，2。。。。n-1，已知它们之间的实力对比关系，&lt;/p&gt;&lt;p&gt;存储在一个二维数组w[n][n]中，w[i][j] 的值代表编号为i，j的队伍中更强的一支。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;所以w[i][j]=i 或者j，现在给出它们的出场顺序，并存储在数组order[n]中，&lt;/p&gt;&lt;p&gt;比如order[n] = {4,3,5,8,1......}，那么第一轮比赛就是 4对3， 5对8。.......&lt;/p&gt;&lt;p&gt;胜者晋级，败者淘汰，同一轮淘汰的所有队伍排名不再细分，即可以随便排，&lt;/p&gt;&lt;p&gt;下一轮由上一轮的胜者按照顺序，再依次两两比，比如可能是4对5,直至出现第一名&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;编程实现，给出二维数组w，一维数组order 和 用于输出比赛名次的数组result[n]，&lt;/p&gt;&lt;p&gt;求出result。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;37.（字符串）&lt;/p&gt;&lt;p&gt;有n个长为m+1的字符串，&lt;/p&gt;&lt;p&gt;如果某个字符串的最后m个字符与某个字符串的前m个字符匹配，则两个字符串可以联接，&lt;/p&gt;&lt;p&gt;问这n个字符串最多可以连成一个多长的字符串，如果出现循环，则返回错误。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;38.（算法）&lt;/p&gt;&lt;p&gt;百度面试：&lt;/p&gt;&lt;p&gt;1.用天平（只能比较，不能称重）从一堆小球中找出其中唯一一个较轻的，使用x次天平，&lt;/p&gt;&lt;p&gt;最多可以从y个小球中找出较轻的那个，求y与x的关系式。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.有一个很大很大的输入流，大到没有存储器可以将其存储下来，&lt;/p&gt;&lt;p&gt;而且只输入一次，如何从这个输入流中随机取得m个记录。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3.大量的URL字符串，如何从中去除重复的，优化时间空间复杂度&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;39.（树、图、算法）&lt;/p&gt;&lt;p&gt;网易有道笔试：&lt;/p&gt;&lt;p&gt;(1).&lt;/p&gt;&lt;p&gt;求一个二叉树中任意两个节点间的最大距离，&lt;/p&gt;&lt;p&gt;两个节点的距离的定义是这两个节点间边的个数，&lt;/p&gt;&lt;p&gt;比如某个孩子节点和父节点间的距离是1，和相邻兄弟节点间的距离是2，优化时间空间复杂度。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;(2).&lt;/p&gt;&lt;p&gt;求一个有向连通图的割点，割点的定义是，如果除去此节点和与其相关的边，&lt;/p&gt;&lt;p&gt;有向图不再连通，描述算法。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;40.百度研发笔试题（栈、算法）&lt;/p&gt;&lt;p&gt;引用自：zp155334877&lt;/p&gt;&lt;p&gt;1)设计一个栈结构，满足一下条件：min，push，pop操作的时间复杂度为O(1)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2)一串首尾相连的珠子(m个)，有N种颜色(N&amp;lt;=10)，&lt;/p&gt;&lt;p&gt;设计一个算法，取出其中一段，要求包含所有N中颜色，并使长度最短。&lt;/p&gt;&lt;p&gt;并分析时间复杂度与空间复杂度。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3)设计一个系统处理词语搭配问题，比如说 中国 和人民可以搭配，&lt;/p&gt;&lt;p&gt;则中国人民人民中国都有效。要求：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; *系统每秒的查询数量可能上千次；&lt;/p&gt;&lt;p&gt;&amp;nbsp; *词语的数量级为10W；&lt;/p&gt;&lt;p&gt;&amp;nbsp; *每个词至多可以与1W个词搭配&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当用户输入中国人民的时候，要求返回与这个搭配词组相关的信息。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;41.求固晶机的晶元查找程序（匹配、算法）&lt;/p&gt;&lt;p&gt;晶元盘由数目不详的大小一样的晶元组成，晶元并不一定全布满晶元盘，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;照相机每次这能匹配一个晶元，如匹配过，则拾取该晶元，&lt;/p&gt;&lt;p&gt;若匹配不过，照相机则按测好的晶元间距移到下一个位置。&lt;/p&gt;&lt;p&gt;求遍历晶元盘的算法求思路。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;42.请修改append函数，利用这个函数实现（链表）：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;两个非降序链表的并集，1-&amp;gt;2-&amp;gt;3 和 2-&amp;gt;3-&amp;gt;5 并为 1-&amp;gt;2-&amp;gt;3-&amp;gt;5&lt;/p&gt;&lt;p&gt;另外只能输出结果，不能修改两个链表的数据。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;43.递归和非递归俩种方法实现二叉树的前序遍历。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;44.腾讯面试题（算法）：&lt;/p&gt;&lt;p&gt;1.设计一个魔方（六面）的程序。&lt;/p&gt;&lt;p&gt;2.有一千万条短信，有重复，以文本文件的形式保存，一行一条，有重复。&lt;/p&gt;&lt;p&gt;请用5分钟时间，找出重复出现最多的前10条。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3.收藏了1万条url，现在给你一条url，如何找出相似的url。（面试官不解释何为相似）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;45.雅虎（运算、矩阵）：&lt;/p&gt;&lt;p&gt;1.对于一个整数矩阵，存在一种运算，对矩阵中任意元素加一时，需要其相邻（上下左右）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;某一个元素也加一，现给出一正数矩阵，判断其是否能够由一个全零矩阵经过上述运算得到。&lt;/p&gt;&lt;p&gt;2.一个整数数组，长度为n，将其分为m份，使各份的和相等，求m的最大值&lt;/p&gt;&lt;p&gt;&amp;nbsp; 比如{3，2，4，3，6} 可以分成{3，2，4，3，6} m=1;&lt;/p&gt;&lt;p&gt;&amp;nbsp; {3,6}{2,4,3} m=2&lt;/p&gt;&lt;p&gt;&amp;nbsp; {3,3}{2,4}{6} m=3 所以m的最大值为3&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;46.搜狐（运算）：&lt;/p&gt;&lt;p&gt;四对括号可以有多少种匹配排列方式？比如两对括号可以有两种：（）（）和（（））&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;47.创新工场（算法）：&lt;/p&gt;&lt;p&gt;求一个数组的最长递减子序列比如{9，4，3，2，5，4，3，2}的最长递减子序列为{9，5，4，3，2}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;48.微软（运算）：&lt;/p&gt;&lt;p&gt;一个数组是由一个递减数列左移若干位形成的，比如{4，3，2，1，6，5}&lt;/p&gt;&lt;p&gt;是由{6，5，4，3，2，1}左移两位形成的，在这种数组中查找某一个数。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;49.一道看上去很吓人的算法面试题（排序、算法）：&lt;/p&gt;&lt;p&gt;如何对n个数进行排序，要求时间复杂度O(n)，空间复杂度O(1)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;50.网易有道笔试（sorry，与第39题重复）：&lt;/p&gt;&lt;p&gt;1.求一个二叉树中任意两个节点间的最大距离，两个节点的距离的定义是 这两个节点间边的个数，&lt;/p&gt;&lt;p&gt;比如某个孩子节点和父节点间的距离是1，和相邻兄弟节点间的距离是2，优化时间空间复杂度。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.求一个有向连通图的割点，割点的定义是，&lt;/p&gt;&lt;p&gt;如果除去此节点和与其相关的边，有向图不再连通，描述算法。&lt;/p&gt;&lt;p&gt;-------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;51.和为n连续正数序列（数组）。&lt;/p&gt;&lt;p&gt;题目：输入一个正数n，输出所有和为n连续正数序列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如输入15，由于1+2+3+4+5=4+5+6=7+8=15，所以输出3个连续序列1-5、4-6和7-8。&lt;/p&gt;&lt;p&gt;分析：这是网易的一道面试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;52.二元树的深度（树）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;题目：输入一棵二元树的根结点，求该树的深度。&lt;/p&gt;&lt;p&gt;从根结点到叶结点依次经过的结点（含根、叶结点）形成树的一条路径，最长路径的长度为树的深度。&lt;/p&gt;&lt;p&gt;例如：输入二元树：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp; \&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;输出该树的深度3。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;二元树的结点定义如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;struct SBinaryTreeNode // a node of the binary tree&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_nValue; // value of node&lt;/p&gt;&lt;p&gt;SBinaryTreeNode&amp;nbsp; *m_pLeft;&amp;nbsp; // left child of node&lt;/p&gt;&lt;p&gt;SBinaryTreeNode&amp;nbsp; *m_pRight; // right child of node&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;分析：这道题本质上还是考查二元树的遍历。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;53.字符串的排列（字符串）。&lt;/p&gt;&lt;p&gt;题目：输入一个字符串，打印出该字符串中字符的所有排列。&lt;/p&gt;&lt;p&gt;例如输入字符串abc，则输出由字符a、b、c所能排列出来的所有字符串&lt;/p&gt;&lt;p&gt;abc、acb、bac、bca、cab和cba。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：这是一道很好的考查对递归理解的编程题，&lt;/p&gt;&lt;p&gt;因此在过去一年中频繁出现在各大公司的面试、笔试题中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;54.调整数组顺序使奇数位于偶数前面（数组）。&lt;/p&gt;&lt;p&gt;题目：输入一个整数数组，调整数组中数字的顺序，使得所有奇数位于数组的前半部分，&lt;/p&gt;&lt;p&gt;所有偶数位于数组的后半部分。要求时间复杂度为O(n)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;55.（语法）&lt;/p&gt;&lt;p&gt;题目：类CMyString的声明如下：&lt;/p&gt;&lt;p&gt;class CMyString&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;public:&lt;/p&gt;&lt;p&gt;CMyString(char* pData = NULL);&lt;/p&gt;&lt;p&gt;CMyString(const CMyString&amp;amp; str);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~CMyString(void);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMyString&amp;amp; operator = (const CMyString&amp;amp;str);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;private:&lt;/p&gt;&lt;p&gt;char* m_pData;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;请实现其赋值运算符的重载函数，要求异常安全，即当对一个对象进行赋值时发生异常，对象的状态不能改变。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;56.最长公共字串（算法、字符串）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;题目：如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中，&lt;/p&gt;&lt;p&gt;则字符串一称之为字符串二的子串。&lt;/p&gt;&lt;p&gt;注意，并不要求子串（字符串一）的字符必须连续出现在字符串二中。&lt;/p&gt;&lt;p&gt;请编写一个函数，输入两个字符串，求它们的最长公共子串，并打印出最长公共子串。&lt;/p&gt;&lt;p&gt;例如：输入两个字符串BDCABA和ABCBDAB，字符串BCBA和BDAB都是是它们的最长公共子串，&lt;/p&gt;&lt;p&gt;则输出它们的长度4，并打印任意一个子串。&lt;/p&gt;&lt;p&gt;分析：求最长公共子串（Longest Common Subsequence, LCS）是一道非常经典的动态规划题，&lt;/p&gt;&lt;p&gt;因此一些重视算法的公司像MicroStrategy都把它当作面试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;57.用俩个栈实现队列（栈、队列）。&lt;/p&gt;&lt;p&gt;题目：某队列的声明如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;template&amp;lt;typename T&amp;gt; class CQueue&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;public:&lt;/p&gt;&lt;p&gt;CQueue() {}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~CQueue() {}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;void appendTail(const T&amp;amp; node);&amp;nbsp; // append a element to tail&lt;/p&gt;&lt;p&gt;void deleteHead();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // remove a element from head&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;private:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T&amp;gt; m_stack1;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T&amp;gt; m_stack2;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：从上面的类的声明中，我们发现在队列中有两个栈。&lt;/p&gt;&lt;p&gt;因此这道题实质上是要求我们用两个栈来实现一个队列。&lt;/p&gt;&lt;p&gt;相信大家对栈和队列的基本性质都非常了解了：栈是一种后入先出的数据容器，&lt;/p&gt;&lt;p&gt;因此对队列进行的插入和删除操作都是在栈顶上进行；队列是一种先入先出的数据容器，&lt;/p&gt;&lt;p&gt;我们总是把新元素插入到队列的尾部，而从队列的头部删除元素。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;58.从尾到头输出链表（链表）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;题目：输入一个链表的头结点，从尾到头反过来输出每个结点的值。链表结点定义如下：&lt;/p&gt;&lt;p&gt;struct ListNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_nKey;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListNode* m_pNext;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;分析：这是一道很有意思的面试题。&lt;/p&gt;&lt;p&gt;该题以及它的变体经常出现在各大公司的面试、笔试题中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;59.不能被继承的类（语法）。&lt;/p&gt;&lt;p&gt;题目：用C++设计一个不能被继承的类。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：这是Adobe公司2007年校园招聘的最新笔试题。&lt;/p&gt;&lt;p&gt;这道题除了考察应聘者的C++基本功底外，还能考察反应能力，是一道很好的题目。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;60.在O（1）时间内删除链表结点（链表、算法）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;题目：给定链表的头指针和一个结点指针，在O(1)时间删除该结点。链表结点的定义如下：&lt;/p&gt;&lt;p&gt;struct ListNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_nKey;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListNode*&amp;nbsp; m_pNext;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;函数的声明如下：&lt;/p&gt;&lt;p&gt;void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);&lt;/p&gt;&lt;p&gt;分析：这是一道广为流传的Google面试题，能有效考察我们的编程基本功，还能考察我们的反应速度，&lt;/p&gt;&lt;p&gt;更重要的是，还能考察我们对时间复杂度的理解。&lt;/p&gt;&lt;p&gt;-------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;61.找出数组中两个只出现一次的数字（数组）&lt;/p&gt;&lt;p&gt;题目：一个整型数组里除了两个数字之外，其他的数字都出现了两次。&lt;/p&gt;&lt;p&gt;请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)，空间复杂度是O(1)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：这是一道很新颖的关于位运算的面试题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;62.找出链表的第一个公共结点（链表）。&lt;/p&gt;&lt;p&gt;题目：两个单向链表，找出它们的第一个公共结点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;链表的结点定义为：&lt;/p&gt;&lt;p&gt;struct ListNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_nKey;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;ListNode*&amp;nbsp;&amp;nbsp; m_pNext;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分析：这是一道微软的面试题。微软非常喜欢与链表相关的题目，&lt;/p&gt;&lt;p&gt;因此在微软的面试题中，链表出现的概率相当高。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;63.在字符串中删除特定的字符（字符串）。&lt;/p&gt;&lt;p&gt;题目：输入两个字符串，从第一字符串中删除第二个字符串中所有的字符。&lt;/p&gt;&lt;p&gt;例如，输入&amp;rdquo;They are students.&amp;rdquo;和&amp;rdquo;aeiou&amp;rdquo;，&lt;/p&gt;&lt;p&gt;则删除之后的第一个字符串变成&amp;rdquo;Thy r stdnts.&amp;rdquo;。&lt;/p&gt;&lt;p&gt;分析：这是一道微软面试题。在微软的常见面试题中，与字符串相关的题目占了很大的一部分，&lt;/p&gt;&lt;p&gt;因为写程序操作字符串能很好的反映我们的编程基本功。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;64. 寻找丑数（运算）。&lt;/p&gt;&lt;p&gt;题目：我们把只包含因子2、3和5的数称作丑数（Ugly Number）。例如6、8都是丑数，&lt;/p&gt;&lt;p&gt;但14不是，因为它包含因子7。习惯上我们把1当做是第一个丑数。&lt;/p&gt;&lt;p&gt;求按从小到大的顺序的第1500个丑数。&lt;/p&gt;&lt;p&gt;分析：这是一道在网络上广为流传的面试题，据说google曾经采用过这道题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;65.输出1到最大的N位数（运算）&lt;/p&gt;&lt;p&gt;题目：输入数字n，按顺序输出从1最大的n位10进制数。比如输入3，&lt;/p&gt;&lt;p&gt;则输出1、2、3一直到最大的3位数即999。&lt;/p&gt;&lt;p&gt;分析：这是一道很有意思的题目。看起来很简单，其实里面却有不少的玄机。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;66.颠倒栈（栈）。&lt;/p&gt;&lt;p&gt;题目：用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5}，1在栈顶。&lt;/p&gt;&lt;p&gt;颠倒之后的栈为{5, 4, 3, 2, 1}，5处在栈顶。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;67.俩个闲玩娱乐（运算）。&lt;/p&gt;&lt;p&gt;1.扑克牌的顺子&lt;/p&gt;&lt;p&gt;从扑克牌中随机抽5张牌，判断是不是一个顺子，即这5张牌是不是连续的。&lt;/p&gt;&lt;p&gt;2-10为数字本身，A为1，J为11，Q为12，K为13，而大小王可以看成任意数字。&lt;/p&gt;&lt;p&gt;2.n个骰子的点数。&lt;/p&gt;&lt;p&gt;把n个骰子扔在地上，所有骰子朝上一面的点数之和为S。输入n，&lt;/p&gt;&lt;p&gt;打印出S的所有可能的值出现的概率。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;68.把数组排成最小的数（数组、算法）。&lt;/p&gt;&lt;p&gt;题目：输入一个正整数数组，将它们连接起来排成一个数，输出能排出的所有数字中最小的一个。&lt;/p&gt;&lt;p&gt;例如输入数组{32,&amp;nbsp; 321}，则输出这两个能排成的最小数字32132。&lt;/p&gt;&lt;p&gt;请给出解决问题的算法，并证明该算法。&lt;/p&gt;&lt;p&gt;分析：这是09年6月份百度的一道面试题，&lt;/p&gt;&lt;p&gt;从这道题我们可以看出百度对应聘者在算法方面有很高的要求。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;69.旋转数组中的最小元素（数组、算法）。&lt;/p&gt;&lt;p&gt;题目：把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。输入一个排好序的数组的一个旋转，&lt;/p&gt;&lt;p&gt;输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转，该数组的最小值为1。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 分析：这道题最直观的解法并不难。从头到尾遍历数组一次，就能找出最小的元素，&lt;/p&gt;&lt;p&gt;时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性，我们应该能找到更好的解法。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;70.给出一个函数来输出一个字符串的所有排列（经典字符串问题）。&lt;/p&gt;&lt;p&gt;ANSWER 简单的回溯就可以实现了。当然排列的产生也有很多种算法，去看看组合数学，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;还有逆序生成排列和一些不需要递归生成排列的方法。&lt;/p&gt;&lt;p&gt;印象中Knuth的&amp;lt;TAOCP&amp;gt;第一卷里面深入讲了排列的生成。这些算法的理解需要一定的数学功底，&lt;/p&gt;&lt;p&gt;也需要一定的灵感，有兴趣最好看看。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;71.数值的整数次方（数字、运算）。&lt;/p&gt;&lt;p&gt;题目：实现函数double Power(double base, int exponent)，求base的exponent次方。&lt;/p&gt;&lt;p&gt;不需要考虑溢出。&lt;/p&gt;&lt;p&gt;分析：这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码：&lt;/p&gt;&lt;p&gt;double Power(double base, int exponent)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;double result = 1.0;&lt;/p&gt;&lt;p&gt;for(int i = 1; i &amp;lt;= exponent; ++i)&lt;/p&gt;&lt;p&gt;result *= base;&lt;/p&gt;&lt;p&gt;return result;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;72.（语法）&lt;/p&gt;&lt;p&gt;题目：设计一个类，我们只能生成该类的一个实例。&lt;/p&gt;&lt;p&gt;分析：只能生成一个实例的类是实现了Singleton模式的类型。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;73.对称字符串的最大长度（字符串）。&lt;/p&gt;&lt;p&gt;题目：输入一个字符串，输出该字符串中对称的子字符串的最大长度。&lt;/p&gt;&lt;p&gt;比如输入字符串&amp;ldquo;google&amp;rdquo;，由于该字符串里最长的对称子字符串是&amp;ldquo;goog&amp;rdquo;，因此输出4。&lt;/p&gt;&lt;p&gt;分析：可能很多人都写过判断一个字符串是不是对称的函数，这个题目可以看成是该函数的加强版。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;74.数组中超过出现次数超过一半的数字（数组）&lt;/p&gt;&lt;p&gt;题目：数组中有一个数字出现的次数超过了数组长度的一半，找出这个数字。&lt;/p&gt;&lt;p&gt;分析：这是一道广为流传的面试题，包括百度、微软和Google在内的多家公司都&lt;/p&gt;&lt;p&gt;曾经采用过这个题目。要几十分钟的时间里很好地解答这道题，&lt;/p&gt;&lt;p&gt;除了较好的编程能力之外，还需要较快的反应和较强的逻辑思维能力。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;75.二叉树两个结点的最低共同父结点（树）&lt;/p&gt;&lt;p&gt;题目：二叉树的结点定义如下：&lt;/p&gt;&lt;p&gt;struct TreeNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nvalue;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeNode* m_pLeft;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeNode* m_pRight;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;输入二叉树中的两个结点，输出这两个结点在数中最低的共同父结点。&lt;/p&gt;&lt;p&gt;分析：求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两个变种。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;76.复杂链表的复制（链表、算法）&lt;/p&gt;&lt;p&gt;题目：有一个复杂链表，其结点除了有一个m_pNext指针指向下一个结点外，&lt;/p&gt;&lt;p&gt;还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下：&lt;/p&gt;&lt;p&gt;struct ComplexNode&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int m_nValue;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComplexNode* m_pNext;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComplexNode* m_pSibling;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下图是一个含有5个结点的该类型复杂链表。&lt;/p&gt;&lt;p&gt;图中实线箭头表示m_pNext指针，虚线箭头表示m_pSibling指针。为简单起见，&lt;/p&gt;&lt;p&gt;指向NULL的指针没有画出。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;请完成函数ComplexNode* Clone(ComplexNode* pHead)，以复制一个复杂链表。&lt;/p&gt;&lt;p&gt;分析：在常见的数据结构上稍加变化，这是一种很新颖的面试题。&lt;/p&gt;&lt;p&gt;要在不到一个小时的时间里解决这种类型的题目，我们需要较快的反应能力，&lt;/p&gt;&lt;p&gt;对数据结构透彻的理解以及扎实的编程功底。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;77.关于链表问题的面试题目如下（链表）：&lt;/p&gt;&lt;p&gt;1.给定单链表，检测是否有环。&lt;/p&gt;&lt;p&gt;&amp;nbsp;使用两个指针p1,p2从链表头开始遍历，p1每次前进一步，p2每次前进两步。如果p2到达链表尾部，&lt;/p&gt;&lt;p&gt;说明无环，否则p1、p2必然会在某个时刻相遇(p1==p2)，从而检测到链表中有环。&lt;/p&gt;&lt;p&gt;2.给定两个单链表(head1, head2)，检测两个链表是否有交点，如果有返回第一个交点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果head1==head2，那么显然相交，直接返回head1。&lt;/p&gt;&lt;p&gt;否则，分别从head1,head2开始遍历两个链表获得其长度len1与len2，假设len1&amp;gt;=len2，&lt;/p&gt;&lt;p&gt;那么指针p1由head1开始向后移动len1-len2步，指针p2=head2，&lt;/p&gt;&lt;p&gt;下面p1、p2每次向后前进一步并比较p1p2是否相等，如果相等即返回该结点，&lt;/p&gt;&lt;p&gt;否则说明两个链表没有交点。&lt;/p&gt;&lt;p&gt;3.给定单链表(head)，如果有环的话请返回从头结点进入环的第一个节点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 运用题一，我们可以检查链表中是否有环。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果有环，那么p1p2重合点p必然在环中。从p点断开环，&lt;/p&gt;&lt;p&gt;方法为：p1=p, p2=p-&amp;gt;next, p-&amp;gt;next=NULL。此时，原单链表可以看作两条单链表，&lt;/p&gt;&lt;p&gt;一条从head开始，另一条从p2开始，于是运用题二的方法，我们找到它们的第一个交点即为所求。&lt;/p&gt;&lt;p&gt;4.只给定单链表中某个结点p(并非最后一个结点，即p-&amp;gt;next!=NULL)指针，删除该结点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;办法很简单，首先是放p中数据,然后将p-&amp;gt;next的数据copy入p中，接下来删除p-&amp;gt;next即可。&lt;/p&gt;&lt;p&gt;5.只给定单链表中某个结点p(非空结点)，在p前面插入一个结点。&lt;/p&gt;&lt;p&gt;&amp;nbsp; 办法与前者类似，首先分配一个结点q，将q插入在p后，接下来将p中的数据copy入q中，&lt;/p&gt;&lt;p&gt;然后再将要插入的数据记录在p中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;78.链表和数组的区别在哪里（链表、数组）？&lt;/p&gt;&lt;p&gt;分析：主要在基本概念上的理解。&lt;/p&gt;&lt;p&gt;但是最好能考虑的全面一点，现在公司招人的竞争可能就在细节上产生，&lt;/p&gt;&lt;p&gt;谁比较仔细，谁获胜的机会就大。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;79.（链表、字符串）&lt;/p&gt;&lt;p&gt;1.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法？&lt;/p&gt;&lt;p&gt;2.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法？&lt;/p&gt;&lt;p&gt;3.请编写能直接实现strstr()函数功能的代码。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;80.阿里巴巴一道笔试题（运算、算法）&lt;/p&gt;&lt;p&gt;问题描述:&lt;/p&gt;&lt;p&gt;12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?&lt;/p&gt;&lt;p&gt;这个笔试题,很YD,因为把某个递归关系隐藏得很深。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;先来几组百度的面试题：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;===================&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;81.第1组百度面试题&lt;/p&gt;&lt;p&gt;1.一个int数组，里面数据无任何限制，要求求出所有这样的数a[i]，&lt;/p&gt;&lt;p&gt;其左边的数都小于等于它，右边的数都大于等于它。&lt;/p&gt;&lt;p&gt;能否只用一个额外数组和少量其它空间实现。&lt;/p&gt;&lt;p&gt;2.一个文件，内含一千万行字符串，每个字符串在1K以内，&lt;/p&gt;&lt;p&gt;要求找出所有相反的串对，如abc和cba。&lt;/p&gt;&lt;p&gt;3.STL的set用什么实现的？为什么不用hash？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;82.第2组百度面试题&lt;/p&gt;&lt;p&gt;1.给出两个集合A和B，其中集合A={name}，&lt;/p&gt;&lt;p&gt;集合B={age、sex、scholarship、address、...}，&lt;/p&gt;&lt;p&gt;要求：&lt;/p&gt;&lt;p&gt;问题1、根据集合A中的name查询出集合B中对应的属性信息；&lt;/p&gt;&lt;p&gt;问题2、根据集合B中的属性信息（单个属性，如age&amp;lt;20等），查询出集合A中对应的name。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.给出一个文件，里面包含两个字段{url、size}，&lt;/p&gt;&lt;p&gt;即url为网址，size为对应网址访问的次数，&lt;/p&gt;&lt;p&gt;要求：&lt;/p&gt;&lt;p&gt;问题1、利用Linux Shell命令或自己设计算法，&lt;/p&gt;&lt;p&gt;查询出url字符串中包含&amp;ldquo;baidu&amp;rdquo;子字符串对应的size字段值；&lt;/p&gt;&lt;p&gt;问题2、根据问题1的查询结果，对其按照size由大到小的排列。&lt;/p&gt;&lt;p&gt;（说明：url数据量很大，100亿级以上）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;83.第3组百度面试题&lt;/p&gt;&lt;p&gt;1.今年百度的一道题目&lt;/p&gt;&lt;p&gt;百度笔试：给定一个存放整数的数组，重新排列数组使得数组左边为奇数，右边为偶数。&lt;/p&gt;&lt;p&gt;要求：空间复杂度O(1)，时间复杂度为O（n）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.百度笔试题&lt;/p&gt;&lt;p&gt;用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。&lt;/p&gt;&lt;p&gt;memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。&lt;/p&gt;&lt;p&gt;分析：&lt;/p&gt;&lt;p&gt;由于可以把任何类型的指针赋给void类型的指针&lt;/p&gt;&lt;p&gt;这个函数主要是实现各种数据类型的拷贝。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;84.第4组百度面试题&lt;/p&gt;&lt;p&gt;2010年3道百度面试题[相信，你懂其中的含金量]&lt;/p&gt;&lt;p&gt;1.a~z包括大小写与0~9组成的N个数&lt;/p&gt;&lt;p&gt;用最快的方式把其中重复的元素挑出来。&lt;/p&gt;&lt;p&gt;2.已知一随机发生器，产生0的概率是p，产生1的概率是1-p，现在要你构造一个发生器，&lt;/p&gt;&lt;p&gt;使得它构造0和1的概率均为1/2；构造一个发生器，使得它构造1、2、3的概率均为1/3；...，&lt;/p&gt;&lt;p&gt;构造一个发生器，使得它构造1、2、3、...n的概率均为1/n，要求复杂度最低。&lt;/p&gt;&lt;p&gt;3.有10个文件，每个文件1G，&lt;/p&gt;&lt;p&gt;每个文件的每一行都存放的是用户的query，每个文件的query都可能重复。&lt;/p&gt;&lt;p&gt;要求按照query的频度排序.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;85.又见字符串的问题&lt;/p&gt;&lt;p&gt;1.给出一个函数来复制两个字符串A和B。&lt;/p&gt;&lt;p&gt;字符串A的后几个字节和字符串B的前几个字节重叠。&lt;/p&gt;&lt;p&gt;分析：记住，这种题目往往就是考你对边界的考虑情况。&lt;/p&gt;&lt;p&gt;2.已知一个字符串，比如asderwsde,寻找其中的一个子字符串比如sde的个数，&lt;/p&gt;&lt;p&gt;如果没有返回0，有的话返回子字符串的个数。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;86.&lt;/p&gt;&lt;p&gt;怎样编写一个程序，把一个有序整数数组放到二叉树中？&lt;/p&gt;&lt;p&gt;分析:本题考察二叉搜索树的建树方法，简单的递归结构。&lt;/p&gt;&lt;p&gt;关于树的算法设计一定要联想到递归，因为树本身就是递归的定义。&lt;/p&gt;&lt;p&gt;而，学会把递归改称非递归也是一种必要的技术。&lt;/p&gt;&lt;p&gt;毕竟，递归会造成栈溢出，关于系统底层的程序中不到非不得以最好不要用。&lt;/p&gt;&lt;p&gt;但是对某些数学问题，就一定要学会用递归去解决。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;87.&lt;/p&gt;&lt;p&gt;1.大整数数相乘的问题。（这是2002年在一考研班上遇到的算法题）&lt;/p&gt;&lt;p&gt;2.求最大连续递增数字串（如&amp;ldquo;ads3sl456789DF3456ld345AA&amp;rdquo;中的&amp;ldquo;456789&amp;rdquo;）&lt;/p&gt;&lt;p&gt;3.实现strstr功能，即在父串中寻找子串首次出现的位置。&lt;/p&gt;&lt;p&gt;（笔试中常让面试者实现标准库中的一些函数）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;88.2005年11月金山笔试题。编码完成下面的处理函数。&lt;/p&gt;&lt;p&gt;函数将字符串中的字符'*'移到串的前部分，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;前面的非'*'字符后移，但不能改变非'*'字符的先后顺序，函数返回串中字符'*'的数量。&lt;/p&gt;&lt;p&gt;如原始串为：ab**cd**e*12，&lt;/p&gt;&lt;p&gt;处理后为*****abcde12，函数并返回值为5。（要求使用尽量少的时间和辅助空间）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;89.神州数码、华为、东软笔试题&lt;/p&gt;&lt;p&gt;1.2005年11月15日华为软件研发笔试题。实现一单链表的逆转。&lt;/p&gt;&lt;p&gt;2.编码实现字符串转整型的函数（实现函数atoi的功能），据说是神州数码笔试题。如将字符&lt;/p&gt;&lt;p&gt;串 &amp;rdquo;+123&amp;rdquo;123, &amp;rdquo;-0123&amp;rdquo;-123, &amp;ldquo;123CS45&amp;rdquo;123, &amp;ldquo;123.45CS&amp;rdquo;123, &amp;ldquo;CS123.45&amp;rdquo;0&lt;/p&gt;&lt;p&gt;3.快速排序（东软喜欢考类似的算法填空题，又如堆排序的算法等）&lt;/p&gt;&lt;p&gt;4.删除字符串中的数字并压缩字符串。&lt;/p&gt;&lt;p&gt;如字符串&amp;rdquo;abc123de4fg56&amp;rdquo;处理后变为&amp;rdquo;abcdefg&amp;rdquo;。注意空间和效率。&lt;/p&gt;&lt;p&gt;（下面的算法只需要一次遍历，不需要开辟新空间，时间复杂度为O(N)）&lt;/p&gt;&lt;p&gt;5.求两个串中的第一个最长子串（神州数码以前试题）。&lt;/p&gt;&lt;p&gt;如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;90.&lt;/p&gt;&lt;p&gt;1.不开辟用于交换数据的临时空间，如何完成字符串的逆序&lt;/p&gt;&lt;p&gt;(在技术一轮面试中，有些面试官会这样问)。&lt;/p&gt;&lt;p&gt;2.删除串中指定的字符&lt;/p&gt;&lt;p&gt;（做此题时，千万不要开辟新空间，否则面试官可能认为你不适合做嵌入式开发）&lt;/p&gt;&lt;p&gt;3.判断单链表中是否存在环。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;91.&lt;/p&gt;&lt;p&gt;1.一道著名的毒酒问题&lt;/p&gt;&lt;p&gt;有1000桶酒，其中1桶有毒。而一旦吃了，毒性会在1周后发作。&lt;/p&gt;&lt;p&gt;现在我们用小老鼠做实验，要在1周内找出那桶毒酒，问最少需要多少老鼠。&lt;/p&gt;&lt;p&gt;2.有趣的石头问题&lt;/p&gt;&lt;p&gt;有一堆1万个石头和1万个木头，对于每个石头都有1个木头和它重量一样，&lt;/p&gt;&lt;p&gt;把配对的石头和木头找出来。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;92.&lt;/p&gt;&lt;p&gt;1.多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。&lt;/p&gt;&lt;p&gt;如果说,前面的人比后面的人高(两人身高一样认为是合适的),&lt;/p&gt;&lt;p&gt;那么我们就认为这两个人是一对&amp;ldquo;捣乱分子&amp;rdquo;,比如说,现在存在一个序列:&lt;/p&gt;&lt;p&gt;176, 178, 180, 170, 171&lt;/p&gt;&lt;p&gt;这些捣乱分子对为&lt;/p&gt;&lt;p&gt;&amp;lt;176, 170&amp;gt;, &amp;lt;176, 171&amp;gt;, &amp;lt;178, 170&amp;gt;, &amp;lt;178, 171&amp;gt;, &amp;lt;180, 170&amp;gt;, &amp;lt;180, 171&amp;gt;,&lt;/p&gt;&lt;p&gt;那么,现在给出一个整型序列,请找出这些捣乱分子对的个数(仅给出捣乱分子对的数目即可,不用具体的对)&lt;/p&gt;&lt;p&gt;要求：&lt;/p&gt;&lt;p&gt;输入:&lt;/p&gt;&lt;p&gt;为一个文件(in)，文件的每一行为一个序列。序列全为数字，数字间用&amp;rdquo;,&amp;rdquo;分隔。&lt;/p&gt;&lt;p&gt;输出：&lt;/p&gt;&lt;p&gt;为一个文件(out)，每行为一个数字，表示捣乱分子的对数。&lt;/p&gt;&lt;p&gt;详细说明自己的解题思路，说明自己实现的一些关键点。&lt;/p&gt;&lt;p&gt;并给出实现的代码，并分析时间复杂度。&lt;/p&gt;&lt;p&gt;限制：&lt;/p&gt;&lt;p&gt;输入每行的最大数字个数为100000个，数字最长为6位。程序无内存使用限制。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;93.在一个int数组里查找这样的数，它大于等于左侧所有数，小于等于右侧所有数。&lt;/p&gt;&lt;p&gt;直观想法是用两个数组a、b。a[i]、b[i]分别保存从前到i的最大的数和从后到i的最小的数，&lt;/p&gt;&lt;p&gt;一个解答：这需要两次遍历，然后再遍历一次原数组，&lt;/p&gt;&lt;p&gt;将所有data[i]&amp;gt;=a[i-1]&amp;amp;&amp;amp;data[i]&amp;lt;=b[i]的data[i]找出即可&lt;/p&gt;&lt;p&gt;给出这个解答后，面试官有要求只能用一个辅助数组，且要求少遍历一次。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;94.微软笔试题&lt;/p&gt;&lt;p&gt;求随机数构成的数组中找到长度大于=3的最长的等差数列9 d- x' W) w9 ?" o3 b0 R&lt;/p&gt;&lt;p&gt;输出等差数列由小到大:&lt;/p&gt;&lt;p&gt;如果没有符合条件的就输出&lt;/p&gt;&lt;p&gt;格式：&lt;/p&gt;&lt;p&gt;输入[1,3,0,5,-1,6]&lt;/p&gt;&lt;p&gt;输出[-1,1,3,5]&lt;/p&gt;&lt;p&gt;要求时间复杂度，空间复杂度尽量小&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;95.华为面试题&lt;/p&gt;&lt;p&gt;1 判断一字符串是不是对称的，如：abccba&lt;/p&gt;&lt;p&gt;2.用递归的方法判断整数组a[N]是不是升序排列&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;96.08年中兴校园招聘笔试题&lt;/p&gt;&lt;p&gt;1．编写strcpy 函数&lt;/p&gt;&lt;p&gt;已知strcpy 函数的原型是&lt;/p&gt;&lt;p&gt;char *strcpy(char *strDest, const char *strSrc);&lt;/p&gt;&lt;p&gt;其中strDest 是目的字符串，strSrc 是源字符串。不调用C++/C 的字符串库函数，请&lt;/p&gt;&lt;p&gt;编写函数 strcpy&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;最后压轴之戏，终结此微软等100题系列V0.1版。&lt;/p&gt;&lt;p&gt;那就，&lt;/p&gt;&lt;p&gt;连续来几组微软公司的面试题，让你一次爽个够：&lt;/p&gt;&lt;p&gt;======================&lt;/p&gt;&lt;p&gt;97.第1组微软较简单的算法面试题&lt;/p&gt;&lt;p&gt;1.编写反转字符串的程序，要求优化速度、优化空间。&lt;/p&gt;&lt;p&gt;2.在链表里如何发现循环链接？&lt;/p&gt;&lt;p&gt;3.编写反转字符串的程序，要求优化速度、优化空间。&lt;/p&gt;&lt;p&gt;4.给出洗牌的一个算法，并将洗好的牌存储在一个整形数组里。&lt;/p&gt;&lt;p&gt;5.写一个函数，检查字符是否是整数，如果是，返回其整数值。&lt;/p&gt;&lt;p&gt;（或者：怎样只用4行代码编写出一个从字符串到长整形的函数？）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;98.第2组微软面试题&lt;/p&gt;&lt;p&gt;1.给出一个函数来输出一个字符串的所有排列。&lt;/p&gt;&lt;p&gt;2.请编写实现malloc()内存分配函数功能一样的代码。&lt;/p&gt;&lt;p&gt;3.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。&lt;/p&gt;&lt;p&gt;4.怎样编写一个程序，把一个有序整数数组放到二叉树中？&lt;/p&gt;&lt;p&gt;5.怎样从顶部开始逐层打印二叉树结点数据？请编程。&lt;/p&gt;&lt;p&gt;6.怎样把一个链表掉个顺序（也就是反序，注意链表的边界条件并考虑空链表）？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;99.第3组微软面试题&lt;/p&gt;&lt;p&gt;1.烧一根不均匀的绳，从头烧到尾总共需要1个小时。&lt;/p&gt;&lt;p&gt;现在有若干条材质相同的绳子，问如何用烧绳的方法来计时一个小时十五分钟呢？&lt;/p&gt;&lt;p&gt;2.你有一桶果冻，其中有黄色、绿色、红色三种，闭上眼睛抓取同种颜色的两个。&lt;/p&gt;&lt;p&gt;抓取多少个就可以确定你肯定有两个同一颜色的果冻？（5秒-1分钟）&lt;/p&gt;&lt;p&gt;3.如果你有无穷多的水，一个3公升的提捅，一个5公升的提捅，两只提捅形状上下都不均匀，&lt;/p&gt;&lt;p&gt;问你如何才能准确称出4公升的水？（40秒-3分钟）&lt;/p&gt;&lt;p&gt;一个岔路口分别通向诚实国和说谎国。&lt;/p&gt;&lt;p&gt;来了两个人，已知一个是诚实国的，另一个是说谎国的。&lt;/p&gt;&lt;p&gt;诚实国永远说实话，说谎国永远说谎话。现在你要去说谎国，&lt;/p&gt;&lt;p&gt;但不知道应该走哪条路，需要问这两个人。请问应该怎么问？（20秒-2分钟）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;100.第4组微软面试题，挑战思维极限&lt;/p&gt;&lt;p&gt;1.12个球一个天平，现知道只有一个和其它的重量不同，问怎样称才能用三次就找到那个球。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;13个呢？（注意此题并未说明那个球的重量是轻是重，所以需要仔细考虑）（5分钟-1小时）&lt;/p&gt;&lt;p&gt;2.在9个点上画10条直线，要求每条直线上至少有三个点？（3分钟-20分钟）&lt;/p&gt;&lt;p&gt;3.在一天的24小时之中，时钟的时针、分针和秒针完全重合在一起的时候有几次？&lt;/p&gt;&lt;p&gt;都分别是什么时间？你怎样算出来的？（5分钟-15分钟）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;终结附加题：&lt;/p&gt;&lt;p&gt;微软面试题，挑战你的智商&lt;/p&gt;&lt;p&gt;==========&lt;/p&gt;&lt;p&gt;说明：如果你是第一次看到这种题，并且以前从来没有见过类似的题型，&lt;/p&gt;&lt;p&gt;并且能够在半个小时之内做出答案，说明你的智力超常..）&lt;/p&gt;&lt;p&gt;1.第一题 . 五个海盗抢到了100颗宝石，每一颗都一样大小和价值连城。他们决定这么分：&lt;/p&gt;&lt;p&gt;抽签决定自己的号码（1、2、3、4、5）&lt;/p&gt;&lt;p&gt;首先，由1号提出分配方案，然后大家表决，当且仅当超过半数的人同意时，&lt;/p&gt;&lt;p&gt;按照他的方案进行分配，否则将被扔进大海喂鲨鱼&lt;/p&gt;&lt;p&gt;如果1号死后，再由2号提出分配方案，然后剩下的4人进行表决，&lt;/p&gt;&lt;p&gt;当且仅当超过半数的人同意时，按照他的方案进行分配，否则将被扔入大海喂鲨鱼。&lt;/p&gt;&lt;p&gt;依此类推&lt;/p&gt;&lt;p&gt;条件：每个海盗都是很聪明的人，都能很理智地做出判断，从而做出选择。&lt;/p&gt;&lt;p&gt;问题：第一个海盗提出怎样的分配方案才能使自己的收益最大化？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.一道关于飞机加油的问题，已知：&lt;/p&gt;&lt;p&gt;每个飞机只有一个油箱，&amp;nbsp;&lt;/p&gt;&lt;p&gt;飞机之间可以相互加油（注意是相互，没有加油机）&amp;nbsp;&lt;/p&gt;&lt;p&gt;一箱油可供一架飞机绕地球飞半圈，&lt;/p&gt;&lt;p&gt;问题：&lt;/p&gt;&lt;p&gt;为使至少一架飞机绕地球一圈回到起飞时的飞机场，至少需要出动几架飞机？&lt;/p&gt;&lt;p&gt;（所有飞机从同一机场起飞，而且必须安全返回机场，不允许中途降落，中间没有飞机场）&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2220818.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/10/21/interview-questions-collection.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/09/01/answer-to-a-baidu-interview-test-questions.html</id><title type="text">个人对一道百度面试题的实现</title><summary type="text">今天看到园子里的一篇博文，链接如下：http://www.cnblogs.com/sdlypyzq/archive/2011/08/31/2161067.html，给出了一道百度面试题如下： 假设一整型数组存在若干正数和负数，现在通过某种算法使得该数组的所有负数在正数的左边，且保证负数件和正数间元素相对位置不变。 例如 -3 4 2 -1 7 3 -5 排序后 -3 -1 -5 4 2 7 3 下面给出自己的一个简单的实现，懒得开VS了，直接上Notepad++了。。代码如下： 作者：Rocky翔出处：http://www.cnblogs.com...</summary><published>2011-09-01T02:46:00Z</published><updated>2011-09-01T02:46:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/09/01/answer-to-a-baidu-interview-test-questions.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/09/01/answer-to-a-baidu-interview-test-questions.html"/><content type="html">&lt;p&gt;今天看到园子里的一篇博文，链接如下：&lt;a href="http://www.cnblogs.com/sdlypyzq/archive/2011/08/31/2161067.html"&gt;http://www.cnblogs.com/sdlypyzq/archive/2011/08/31/2161067.html&lt;/a&gt;，给出了一道百度面试题如下：&lt;/p&gt;&lt;p&gt;假设一整型数组存在若干正数和负数，现在通过某种算法使得该数组的所有负数在正数的左边，且保证负数件和正数间元素相对位置不变。&lt;/p&gt;&lt;p&gt;例如 &lt;br /&gt;-3 4 2 -1 7 3 -5 &lt;br /&gt;排序后 &lt;br /&gt;-3 -1 -5 4 2 7 3&lt;/p&gt;&lt;p&gt;下面给出自己的一个简单的实现，懒得开VS了，直接上Notepad++了。。代码如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011090110433987.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2161695.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/09/01/answer-to-a-baidu-interview-test-questions.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/31/my-word-segmentation-software-part-seven.html</id><title type="text">基于.NET的分词软件设计与实现V7.0--移植B/S（完结篇）</title><summary type="text">之前的文章介绍了个人分词软件在介入数据库作为词典存储介质后的表现，为了让分词软件能够更好得得到展示，本篇讲介绍将其移植B/S端的相关方法。 在《基于.NET的分词软件设计与实现V3.0--对比测试及改变》中，我介绍了很多基于B/S和C/S的分词程序，在移植B/S端时，我参照了很多相关的功能，并从中提炼了四个最主要的功能（其中标注不作为本分词软件的重点，故予以排除）： 1、以“\”为间隔的切分； 2、以“ ”为间隔的切分（所谓的“北大标准”切分）； 3、去除文本标点； 4、在之前的版本中我进行了去除文本格式的尝试，虽然在对比测试后没有予以使用，但在这里依然作为一个附属功能提炼出来，称为“去除文.</summary><published>2011-07-31T02:45:00Z</published><updated>2011-07-31T02:45:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/31/my-word-segmentation-software-part-seven.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/31/my-word-segmentation-software-part-seven.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a id="ctl03_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;之前&lt;/span&gt;&lt;/a&gt;的文章介绍了个人分词软件在介入数据库作为词典存储介质后的表现，为了让分词软件能够更好得得到展示，本篇讲介绍将其移植B/S端的相关方法。&lt;/p&gt;&lt;p&gt;在《&lt;a id="ctl03_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/06/15/my-word-segmentation-software-part-three.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V3.0--对比测试及改变&lt;/span&gt;&lt;/a&gt;》中，我介绍了很多基于B/S和C/S的分词程序，在移植B/S端时，我参照了很多相关的功能，并从中提炼了四个最主要的功能（其中标注不作为本分词软件的重点，故予以排除）：&lt;/p&gt;&lt;p&gt;1、以&amp;ldquo;\&amp;rdquo;为间隔的切分；&lt;/p&gt;&lt;p&gt;2、以&amp;ldquo;&amp;nbsp; &amp;rdquo;为间隔的切分（所谓的&amp;ldquo;北大标准&amp;rdquo;切分）；&lt;/p&gt;&lt;p&gt;3、去除文本标点；&lt;/p&gt;&lt;p&gt;4、在之前的版本中我进行了去除文本格式的尝试，虽然在对比测试后没有予以使用，但在这里依然作为一个附属功能提炼出来，称为&amp;ldquo;去除文本格式&amp;rdquo;，即去除文本中多余的换行符、空格符等。&lt;/p&gt;&lt;p&gt;&amp;nbsp;　&amp;nbsp; 代码清单：&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;1、HTML代码：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="header"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="logo"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="imgLogo"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="container"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="bk_container"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;label &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="inputMessage"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 请输入需要分词的文本：&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;label&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;textarea &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbContent"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cols&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="85"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; rows&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="20"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;textarea&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="option"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="checkbox"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ckPunc"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 去除文本标点&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="checkbox"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ckFormat"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 去除文本格式&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="checkbox"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ckPeking"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 使用北大标准输出&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;img &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="img/bt_splitter.gif"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnSubmit"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; alt&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="分词"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; onclick&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="getResult();"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;label &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="result"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 分词处理结果：&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;label&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;textarea &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbResult"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cols&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="85"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; rows&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="20"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;textarea&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="footer"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="footerImg"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="js/ajax.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="js/segment.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;展示效果（介于保密，故不展示页面的header和footer信息）：&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110071228.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;2、ajax.js代码：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyxAjax &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;    arrXmlHttp: [],&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;    getXmlHttp: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;            xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ActiveXObject(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Microsoft.XMLHTTP&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (e) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;                xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ActiveXObject(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Msxml2.XMLHTTP&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (E) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;                xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt; XMLHttpRequest &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;undefined&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;            xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; XMLHttpRequest(); &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; xmlHttp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #000000;"&gt;    },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #000000;"&gt;    clearXmlHttp: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, ln &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.arrXmlHttp.length; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; ln; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.arrXmlHttp[i]) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delete&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.arrXmlHttp[i];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; &lt;span style="color: #000000;"&gt;                } &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (e) { }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.arrXmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt; &lt;span style="color: #000000;"&gt;    },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt; &lt;span style="color: #000000;"&gt;    send: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(url, options) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; xmlHttp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.getXmlHttp();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; _options &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt; &lt;span style="color: #000000;"&gt;            method: &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;GET&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;38&lt;/span&gt; &lt;span style="color: #000000;"&gt;            data: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;39&lt;/span&gt; &lt;span style="color: #000000;"&gt;            successCallback: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;40&lt;/span&gt; &lt;span style="color: #000000;"&gt;            failCallback: &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;41&lt;/span&gt; &lt;span style="color: #000000;"&gt;        };&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;42&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; property &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; options) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;43&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _options[property] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; options[property];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;44&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;45&lt;/span&gt; &lt;span style="color: #000000;"&gt;        xmlHttp.open(_options.method, url, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;46&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (_options.method &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;POST&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;47&lt;/span&gt; &lt;span style="color: #000000;"&gt;            xmlHttp.setRequestHeader(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;Content-Type&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;application/x-www-form-urlencoded&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;48&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;49&lt;/span&gt; &lt;span style="color: #000000;"&gt;        xmlHttp.onreadystatechange &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;50&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (xmlHttp.readyState &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;51&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (xmlHttp.status &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;200&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; xmlHttp.status &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;300&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;52&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    _options.successCallback(xmlHttp, _options.data);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;53&lt;/span&gt; &lt;span style="color: #000000;"&gt;                }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;54&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;55&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    _options.failCallback(xmlHttp, _options.data);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;56&lt;/span&gt; &lt;span style="color: #000000;"&gt;                }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;57&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;58&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;59&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.clearXmlHttp();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;60&lt;/span&gt; &lt;span style="color: #000000;"&gt;        xmlHttp.send(_options.data);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;61&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.arrXmlHttp.push(xmlHttp);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;62&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; xmlHttp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;63&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;64&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;在测试的过程中，发现所有的基于B/S的分词软件都在分词操作的时候进行了页面刷新，个人觉得这影响了用户体验，故在个人的分词软件移植B/S端时，使用Ajax技术，使页面不进行刷新。&lt;/p&gt;&lt;p&gt;上述ajax.js的代码是个人封装的Ajax操作类，里面包含了常见的Ajax操作。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;3、segment.js代码：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; $$(id) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; document.getElementById(id);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; getResult() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ($$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;tbContent&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).value &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;        alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;请输入需要进行分词的内容！&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; url &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Handler.ashx?&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; params &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;content=&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; encodeURIComponent($$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;tbContent&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).value);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;    MyxAjax.send(url, { method: &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;POST&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, data: params, successCallback: showResult });&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; showResult(req, data) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; req.responseText;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ($$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;ckPunc&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).checked)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;        result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; result.replace(&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;\\[&amp;middot;～！◎￥％&amp;hellip;※&amp;times;（）－&amp;mdash;＝【『』】&amp;divide;&amp;sect;：；&amp;rdquo;&amp;ldquo;&amp;lsquo;&amp;rsquo;，《。》、？～｀！￥％＾＆＊（）＿－＝［｛］｝&lt;/span&gt;&lt;span style="color: #000000;"&gt;＼｜；&lt;/span&gt;&lt;span style="color: #000000;"&gt;：＂＇，．／＜＞？]\\&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;g, &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;\\&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ($$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;ckFormat&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).checked)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;        result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; result.replace(&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;[ \r\n　]+&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;g, &lt;/span&gt;&lt;span style="color: #000000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ($$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;ckPeking&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).checked)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #000000;"&gt;        result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; result.replace(&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;\\&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;g, &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #000000;"&gt;    $$(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;tbResult&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; result;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;这里要注意两句代码：&lt;/p&gt;&lt;p&gt;encodeURIComponent(&lt;span style="font-family: Courier New;" face="Courier New"&gt;$$(&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;tbContent&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).value&lt;/span&gt;&lt;/span&gt;)：对分词的内容进行了编码处理，去除了特殊字符的影响。&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;MyxAjax.send(url, { method: &lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;POST&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, data: params, successCallback: showResult })：这里必须使用POST传值，而不能使用GET方式，这是基于以下两点进行考虑的：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;（1）、POST传输数据时，不需要在URL中显示出来，而GET方法要在URL中显示； &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;（2）、POST传输的数据量大，可以达到2M，而GET方法则会受到URL长度的限制，参见官方资料：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110224118.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;（3）、基于搜索引擎的收录考虑，POST传值模式的收录量很好，但是GET传值模式就会有所不同，百度几乎不收，谷歌还好，当然这跟搜索引擎本身也有关系。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;综上所述，基于安全、用户分词文本的长度未知以及SEO三方面的考虑，这里选择了POST的传参方式。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;4、Handler.ashx代码：&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProcessRequest(HttpContext context)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            Splitter s &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Splitter(context.Server.MapPath(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;~/Resources/Vocabulary.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;), &lt;/span&gt;&lt;span style="color: #000000;"&gt; context.Server.MapPath(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;~/Resources/ChinesePunctuations.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;), &lt;/span&gt;&lt;span style="color: #000000;"&gt; context.Server.MapPath(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;~/Resources/EnglishPunctuations.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; &lt;span style="color: #000000;"&gt;            s.InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; HttpUtility.HtmlDecode(context.Request[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;content&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;].ToString());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.GetResult();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;6&lt;/span&gt; &lt;span style="color: #000000;"&gt;            context.Response.Write(result);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;7&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;　&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;5、Splitter.cs代码：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;  1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; WebSplitter&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  3&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; 字段属性&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  4&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  5&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  6&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 待分词文本&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  7&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  8&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;  9&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 10&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：分词词典(HashSet)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 11&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 12&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        HashSet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dict &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HashSet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 13&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 14&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 中文标点分隔符&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 15&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 16&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chineseSpiltters;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 17&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 18&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 英文标点分隔符&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 19&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 20&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; _englishSpiltters;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 21&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 22&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 非中文字符（包括数字、英文及英文标点符号）正则表达式&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 23&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 24&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        Regex _nonChineseRegex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 25&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 26&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 中文字符正则表达式&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 27&lt;/span&gt; &lt;span style="color: #008000;"&gt;      &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 28&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        Regex _chineseRegex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 29&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 30&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 中文标点符号正则表达式&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 31&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 32&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        Regex _chinesePunctuationRegex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 33&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 34&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：是否对待分词文本作格式化（即是否保留原来文本的格式）&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 35&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 36&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;bool _isinit = false;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 37&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; IsFormat { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 38&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 39&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：是否去除待分词文本的标点&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 40&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 41&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;bool _isStripPunctuation = false;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 42&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; IsStripPunctuation { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 43&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 44&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：是否使用北大标准输出（以空格为间隔），默认为973标准（以\为间隔）&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 45&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 46&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; IsPekingStandard { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 47&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 48&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 49&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 50&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; 构造函数&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 51&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 52&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; WebSplitter()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 53&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 54&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _dict &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetVocabularyDictionary(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Vocabulary.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 55&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chineseSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetPunctuationDictionary(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ChinesePunctuations.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 56&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _englishSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetPunctuationDictionary(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EnglishPunctuations.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 57&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 58&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _nonChineseRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; _englishSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;0-9A-Za-z]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 59&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chineseRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[\u4e00-\u9fa5]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 60&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chinesePunctuationRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chineseSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 61&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 62&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 63&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; WebSplitter(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; vocabularyPath, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; chinesePunctuationsPath, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; englishPunctuations)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 64&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 65&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _dict &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetVocabularyDictionary(vocabularyPath);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 66&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chineseSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetPunctuationDictionary(chinesePunctuationsPath);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 67&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _englishSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetPunctuationDictionary(englishPunctuations);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 68&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 69&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _nonChineseRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; _englishSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;0-9A-Za-z]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 70&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chineseRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[\u4e00-\u9fa5]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 71&lt;/span&gt; &lt;span style="color: #000000;"&gt;            _chinesePunctuationRegex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chineseSpiltters &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 72&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 73&lt;/span&gt; &lt;span style="color: #000000;"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 74&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 75&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 76&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; 私有方法&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 77&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 78&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 79&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 创建分词字典&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 80&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 81&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="dictPath"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;分词字典存放路径&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 82&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        HashSet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetVocabularyDictionary(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dictPath)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 83&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 84&lt;/span&gt; &lt;span style="color: #000000;"&gt;            var arrVocabulary &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; File.ReadAllLines(dictPath, Encoding.Default);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 85&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; s &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; arrVocabulary)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 86&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 87&lt;/span&gt; &lt;span style="color: #000000;"&gt;                _dict.Add(s);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 88&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 89&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dict;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 90&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 91&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 92&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 93&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 创建分隔符组成的字符串&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 94&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 95&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="dictPath"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;分隔符字典存放路径&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 96&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetPunctuationDictionary(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dictPath)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 97&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 98&lt;/span&gt; &lt;span style="color: #000000;"&gt;            StringBuilder strBuilder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; StringBuilder();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 99&lt;/span&gt; &lt;span style="color: #000000;"&gt;            var arrPunctuation &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; File.ReadAllLines(dictPath);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;100&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; s &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; arrPunctuation)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;101&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;102&lt;/span&gt; &lt;span style="color: #000000;"&gt;                strBuilder.Append(s);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;103&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;104&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; strBuilder.ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;105&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;106&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;107&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;108&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：对待分词文本进行预处理（如删除一个或多个标点符号、空白字符、换行符等)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;109&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;110&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="str"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;待分词文本&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;111&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; PreProcess()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;112&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;113&lt;/span&gt; &lt;span style="color: #000000;"&gt;            Regex regex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Regex(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[ \r\n　]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;114&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (regex.IsMatch(InputStr))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;115&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;116&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; regex.Replace(InputStr, &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;117&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;118&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr.Trim();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;119&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;120&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;121&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;122&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 为所有数字英文添加分隔符&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;123&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;124&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;125&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitNonChinese()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;126&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;127&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Updated&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;128&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (IsFormat)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;129&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; PreProcess();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;130&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;131&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; j &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; j &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _nonChineseRegex.Matches(InputStr).Count; j&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;132&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;133&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr.Insert(_nonChineseRegex.Matches(InputStr)[j].Index &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;                                             _nonChineseRegex.Matches(InputStr)[j].Value.Length, &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;134&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;135&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;136&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;137&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;138&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;139&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：去除待分词文本中的标点&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;140&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;141&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; StripPunctuation()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;142&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;143&lt;/span&gt; &lt;span style="color: #000000;"&gt;            InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitNonChinese();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;144&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (var item &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chinesePunctuationRegex.Matches(InputStr))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;145&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;146&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr.Replace(item.ToString(), &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;147&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;148&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;149&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;150&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;151&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;152&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 为所有中文标点添加分隔符&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;153&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;154&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitChinesePunctuation()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;155&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;156&lt;/span&gt; &lt;span style="color: #000000;"&gt;            InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitNonChinese();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;157&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chinesePunctuationRegex.Matches(InputStr).Count; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;158&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;159&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr.Insert(_chinesePunctuationRegex.Matches(InputStr)[i].Index &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;                                               _chinesePunctuationRegex.Matches(InputStr)[i].Value.Length, &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;160&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;161&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStr;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;162&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;163&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;164&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;165&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 为所有汉字添加分隔符&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;166&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;167&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitChinese()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;168&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;169&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Updated&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;170&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (IsStripPunctuation)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;171&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; StripPunctuation();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;172&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;173&lt;/span&gt; &lt;span style="color: #000000;"&gt;                InputStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitChinesePunctuation();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;174&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;175&lt;/span&gt; &lt;span style="color: #000000;"&gt;            StringBuilder sb &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; StringBuilder(InputStr);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;176&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;177&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Match item &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; _chineseRegex.Matches(sb.ToString()))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;178&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;179&lt;/span&gt; &lt;span style="color: #000000;"&gt;                sb &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sb.Insert(item.Index &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; item.Value.Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; i, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;180&lt;/span&gt; &lt;span style="color: #000000;"&gt;                i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;181&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;182&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; sb.ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;183&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;184&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;185&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;186&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 采用逆向匹配算法对字符串进行分词操作&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;187&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;188&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="str"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;待分词的字符串&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;189&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; Spiltter(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; str)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;190&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;191&lt;/span&gt; &lt;span style="color: #000000;"&gt;            List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;192&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;193&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; initStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; str.Remove(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;194&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; l &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;195&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;196&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(initStr))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;197&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;198&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; str.Length; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;199&lt;/span&gt; &lt;span style="color: #000000;"&gt;                {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;200&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (initStr.Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dict.Contains(initStr))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;201&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;202&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Regex.IsMatch(initStr, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;[　 \n\r]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;203&lt;/span&gt; &lt;span style="color: #000000;"&gt;                            result.Add(initStr);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;204&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;205&lt;/span&gt; &lt;span style="color: #000000;"&gt;                            result.Add(initStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;206&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;207&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        l &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; initStr.Length;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;208&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        initStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; str.Remove(str.Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; l, l);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;209&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;210&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;211&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;212&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;213&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        initStr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; initStr.Remove(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;214&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;215&lt;/span&gt; &lt;span style="color: #000000;"&gt;                }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;216&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;217&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; result;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;218&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;219&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;220&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;221&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 输出最终结果（仅在IsFormat属性为true时执行）&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;222&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;223&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; OutputResult(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; str)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;224&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;225&lt;/span&gt; &lt;span style="color: #000000;"&gt;            str &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; str.Replace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;  &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;226&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; str;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;227&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;228&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;229&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;230&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;231&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; 公有方法&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;232&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;233&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;234&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获得分词结果&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;235&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;236&lt;/span&gt; &lt;span style="color: #008000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="str"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;待分词文本&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;237&lt;/span&gt; &lt;span style="color: #808080;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetResult()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;238&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;239&lt;/span&gt; &lt;span style="color: #000000;"&gt;            StringBuilder strBuilder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; StringBuilder();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;240&lt;/span&gt; &lt;span style="color: #000000;"&gt;            List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; splitterResult &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;241&lt;/span&gt; &lt;span style="color: #000000;"&gt;            List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; strList &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SplitChinese().Split(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).ToList();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;242&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;243&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; strList.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;244&lt;/span&gt; &lt;span style="color: #000000;"&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;245&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strList[i]))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;246&lt;/span&gt; &lt;span style="color: #000000;"&gt;                {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;247&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (strList[i].Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt; _nonChineseRegex.IsMatch(strList[i]) &lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dict.Contains(strList[i]))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;248&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;249&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        strBuilder.Append(strList[i] &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;250&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;251&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;252&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;253&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        splitterResult &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Spiltter(strList[i]);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;254&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; q &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; splitterResult.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, p &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; q; p &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; p&lt;/span&gt;&lt;span style="color: #000000;"&gt;--&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;255&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;256&lt;/span&gt; &lt;span style="color: #000000;"&gt;                            strBuilder.Append(splitterResult[p]);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;257&lt;/span&gt; &lt;span style="color: #000000;"&gt;                        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;258&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;259&lt;/span&gt; &lt;span style="color: #000000;"&gt;                }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;260&lt;/span&gt; &lt;span style="color: #000000;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;261&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;262&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Updated&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;263&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (IsPekingStandard)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;264&lt;/span&gt; &lt;span style="color: #000000;"&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; OutputResult(strBuilder.ToString());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;265&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;266&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; strBuilder.ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;267&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;268&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;269&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;　&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;　最终效果：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、默认输出：&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110344289.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2、去除文本标点：&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110354387.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3、去除文本标点+格式：&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110362655.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;4、去除文本标点+格式+以北大标准输出：&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://pic002.cnblogs.com/images/2011/56505/2011073110371796.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;至此，终于将自己在四月下旬到五月上旬对于分词软件进行的一些研究整理完毕，最后谢谢一路关注偶的园友们，还望能够得到大家的宝贵意见和建议。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;系列索引：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;1、&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_10_DayList_10_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/06/01/my-word-segmentation-software-part-one.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V1.0--总体思路及算法实现&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;2、&lt;a id="homepage1_HomePageDays_DaysList_DayItem_9_DayList_9_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/06/05/my-word-segmentation-software-part-two.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V2.0--性能问题说明及功能增强&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;　&amp;nbsp; &amp;nbsp; &lt;strong&gt;3、&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="line-height: 24px; font-family: verdana, ����, Arial;"&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_6_DayList_6_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/06/15/my-word-segmentation-software-part-three.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V3.0--对比测试及改变&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;　&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;4、&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="line-height: 24px; font-family: verdana, ����, Arial;"&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_4_DayList_4_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V4.0--使用SortedList提高分词效率&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 24px; font-family: verdana, ����, Arial;"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;5、&lt;/span&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_3_DayList_3_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V5.0--使用Hashtable和HashSet&amp;lt;T&amp;gt;提高分词效率&lt;/span&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 24px; font-family: verdana, ����, Arial;"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;6、&lt;/span&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_1_DayList_1_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V6.0--使用数据库篇（涉及索引、聚集因子和存储过程）&lt;/span&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 24px; font-family: verdana, ����, Arial;"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;7、&lt;/span&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_0_DayList_0_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/31/my-word-segmentation-software-part-seven.html"&gt;&lt;span style="color: #399ab2;" color="#399ab2"&gt;基于.NET的分词软件设计与实现V7.0--移植B/S&lt;/span&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2122588.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/31/my-word-segmentation-software-part-seven.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/27/oos-net-chart-sharing.html</id><title type="text">分享几个asp.net开源图表组件</title><summary type="text">1、NPlot：http://netcontrols.org/nplot/：我觉得是.NET开源轻量级中最好的2、graphviz(quickgraph)：这个大家可以搜索一下，功能很强大(看介绍和图片)。3、ZedGraph：原题“A flexible line graph class library in C#”，在codeproject.com上，效果不错；4、Graph Library：在codeproject.com上，有bar、line、pie三种样式； 5、Full Customizable 3D PieChart with ASP.net，WebForm，在codeprojec</summary><published>2011-07-27T02:49:00Z</published><updated>2011-07-27T02:49:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/27/oos-net-chart-sharing.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/27/oos-net-chart-sharing.html"/><content type="html">&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;1、NPlot：&lt;a href="http://netcontrols.org/nplot/"&gt;http://netcontrols.org/nplot/&lt;/a&gt;：我觉得是.NET开源轻量级中最好的&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;2、graphviz(quickgraph)：这个大家可以搜索一下，功能很强大(看介绍和图片)。&lt;/span&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;3、&lt;span face="宋体"&gt;ZedGraph：原题&amp;ldquo;A flexible line graph class library in C#&amp;rdquo;，在codeproject.com上，效果不错；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;4、&lt;span face="宋体"&gt;Graph Library：在codeproject.com上，有bar、line、pie三种样式； &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;5、&lt;span face="宋体"&gt;Full Customizable 3D PieChart with ASP.net，WebForm，在codeproject.com上，3d饼图；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;6、&lt;span face="宋体"&gt;ASPCharts，WebForm，在codeproject.com上；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;7、&lt;span face="宋体"&gt;ASPChartNet，WebForm，在codeproject.com上；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;8、&lt;span face="宋体"&gt;Web Chart，WebForm，在codeproject.com上，效果非常不错；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;9、&lt;span face="宋体"&gt;SharpVectorGraphics，这是一个矢量图形库，效果一流；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="t_msgfont"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: 14px;"&gt;10、&lt;span face="宋体"&gt;dotnetcharting：&lt;a href="http://www.dotnetcharting.com/"&gt;http://www.dotnetcharting.com/&lt;/a&gt;，就是不开源，但效果一流，仍然写在这里。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2117980.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/27/oos-net-chart-sharing.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html</id><title type="text">基于.NET的分词软件设计与实现V6.0--使用数据库篇（涉及索引、聚集因子和存储过程）</title><summary type="text">忙了一阵子，今天用空下来的一点时间来总结一下之前未完成的分词系列吧。。 上篇提到了使用HashSet&lt;T&gt;作为词典存储数据结构的方法，这也是在不使用数据库的情况下，自己在能力范围之内找到的最佳的解决方案。 但是，如果使用数据库呢，好吧，下面就让我们来看在使用数据库的情况下，本分词软件的表现。一、建立数据库 在之前的版本中，分词的词典都以文本的形式直接保存在txt文件中，这里自然要将其全部转存到数据库的表中，介于词典采用的是每行存取一个词的方法，我采用的方法是循环读取文本文档的每一行，随后使用insert语句将其录入数据库的表中。 随后我们不作任何优化措施，直接开始简单的测试，首先</summary><published>2011-07-22T09:33:00Z</published><updated>2011-07-22T09:33:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html"/><content type="html">&lt;p&gt;忙了一阵子，今天用空下来的一点时间来总结一下之前未完成的分词系列吧。。&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_1_DayList_1_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;上篇&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;提到了使用HashSet&amp;lt;T&amp;gt;作为词典存储数据结构的方法，这也是在不使用数据库的情况下，自己在能力范围之内找到的最佳的解决方案。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;但是，如果使用数据库呢，好吧，下面就让我们来看在使用数据库的情况下，本分词软件的表现。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="Apple-style-span"&gt;　一、建立数据库&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;在之前的版本中，&lt;/span&gt;分词的词典都以文本的形式直接保存在txt文件中，这里自然要将其全部转存到数据库的表中，介于词典采用的是每行存取一个词的方法，我采用的方法是循环读取文本文档的每一行，随后使用insert语句将其录入数据库的表中。&lt;/p&gt;&lt;p&gt;随后我们不作任何优化措施，直接开始简单的测试，首先开启SQL中显示统计信息和分析、编译、执行各语句耗时的功能：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;STATISTICS&lt;/span&gt;&lt;span style="color: #000000;"&gt; IO &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;STATISTICS&lt;/span&gt;&lt;span style="color: #000000;"&gt; TIME &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;p&gt;来看一下查询&amp;ldquo;他们&amp;rdquo;这个简单的词，select * from Vocabulary where item = '他们'&lt;/p&gt;&lt;p&gt;SQL中的执行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072216505081.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意下面几个数据：逻辑读取871次，CPU时间=62毫秒，占用时间=59毫秒。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;随后，我们将程序中判断某个词是否存在的程序改为：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; Updated：判断是否在词典中出现&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="str"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; isExist(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; str)&lt;br /&gt;  {&lt;br /&gt;         DBHelper db &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; DBHelper();&lt;br /&gt;         &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; Convert.ToInt32(db.ExecuteScalar(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;select count(*) from Vocabulary where item = '&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; str &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)) &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;   }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;起初我计划以1000字的文本测试，但最后发现这个想法很不现实，为什么？让我们看下100字文本的分词结果就知道了：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072216541433.jpg" alt="" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p&gt;没错，100字的文本分词时间居然达到了20+秒，无法忍受的一个结果。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　二、优化第一步&amp;mdash;&amp;mdash;建立索引&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;索引的文章园子里面有很多，从原理到实例都有些经典的，这里自不必多说，这里主要看一下索引在本分词软件中的应用。&lt;/p&gt;&lt;p&gt;首先，我们频繁使用item字段，也就是保存词的字段进行查询，且其是表的主键，很适合建立聚集索引：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Splitter&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;***** 对象:  Index [PK_Vocabulary]    脚本日期: 05/06/2011 23:56:26 *****&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PK_Vocabulary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Vocabulary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;(&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;item&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;(&lt;br /&gt;    SORT_IN_TEMPDB &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    DROP_EXISTING &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    IGNORE_DUP_KEY &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    ONLINE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;p&gt;好了，建立完成后来看一下最终的结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072217070592.jpg" alt="" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p&gt;是不是看着顺眼多了（附加一句：py和len两个字段是我为了方便某些特殊查询，比如看有多少个拼音简写是ab的词等，在 程序中木有用处）。&lt;/p&gt;&lt;p&gt;下面以相同的语句查询&amp;ldquo;他们&amp;rdquo;这个词，看下结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072217100331.jpg" alt="" /&gt;&lt;br /&gt;&lt;strong&gt;注意下面几个数据：逻辑读取2次，CPU时间=0毫秒，占用时间=11毫秒。&lt;/strong&gt;耗时明显大幅度降低了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: 28px; font-weight: bold; line-height: 42px;"&gt;　三、优化第二步&amp;mdash;&amp;mdash;使用填充因子&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: 28px; font-weight: bold; line-height: 42px;"&gt;　&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;填充因子百分比指首次创建索引时索引页的叶级别充满程序，若没有显示设置，则默认为&lt;/span&gt;&lt;span lang="EN-US"&gt;0&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;当最初生成索引时，&lt;/span&gt;&lt;span lang="EN-US"&gt;SQLServer &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;将索引&lt;/span&gt;&lt;span lang="EN-US"&gt; B &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;树结构放置在连续的物理页上，以便通过连续&lt;/span&gt;&lt;span lang="EN-US"&gt; I/O &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;扫描索引页获取最佳&lt;/span&gt;&lt;span lang="EN-US"&gt; I/O &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;性能。当由于发生页拆分，需要将新的页插入索引的逻辑&lt;/span&gt;&lt;span lang="EN-US"&gt; B &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;树结构时，&lt;/span&gt;&lt;span lang="EN-US"&gt;SQL Server &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;必须分配新的&lt;/span&gt;&lt;span lang="EN-US"&gt; 8 KB &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;索引页。这种插入发生在硬盘上的其它位置，从而打断了索引页的物理连续特性。使&lt;/span&gt;&lt;span lang="EN-US"&gt; I/O &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;操作从连续变为不连续，从而使得性能减低一半。可以通过重建索引页以恢复索引页的物理连续顺序来解决过多的页拆分。聚集索引的叶级也会遇到相同的问题，从而影响表的数据页。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;100%&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;填充因子可以提升读取的性能，但会减缓写活动的功能，引发频繁的页拆分，因为数据库引擎为了在数据页中得到空间必须持续地交换行的位置。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;填充因子太低会给插入带来便利，但读取较慢，因为如果填充因子太小&lt;/span&gt;&lt;span lang="EN-US"&gt;,&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;就需要使用更多的页来保存数据，而更多页就意味着每个查询要读取的物理数据页读操作的数量也变得更多，此时，读和写操作的机能都会降低。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;最佳实践：在没有修改活动的表中使用&lt;/span&gt;&lt;span lang="EN-US"&gt;100%&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;的填充因子，中低活动的使用&lt;/span&gt;&lt;span lang="EN-US"&gt;70-90%&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;，高活动的使用&lt;/span&gt;&lt;span lang="EN-US"&gt;50%&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"&gt;甚至更低的填充因子。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Splitter&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;***** 对象:  Index [PK_Vocabulary]    脚本日期: 05/06/2011 23:56:26 *****&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PK_Vocabulary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Vocabulary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;(&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;item&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;(&lt;br /&gt;    PAD_INDEX &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FILLFACTOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;,  &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;填充因子100%&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    SORT_IN_TEMPDB &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    DROP_EXISTING &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    IGNORE_DUP_KEY &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br /&gt;    ONLINE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;上面的代码演示了创建聚集索引并指定100%的填充因子。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;继续看一下数据库中查询&amp;ldquo;他们&amp;rdquo;的效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072217181833.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意下面几个数据：逻辑读取3次，CPU时间=0毫秒，占用时间=1毫秒。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;可以看到较建立索引并使用默认填充因子的表现又更进了一步。&lt;/p&gt;&lt;p&gt;下面可以看一下1000字文本的测试结果了：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072217194474.jpg" alt="" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p&gt;可以看到，1000字的文本仅仅花了1.7秒左右，较之前没有使用索引的惨不忍睹有了不少好转。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　&lt;span class="Apple-style-span" style="font-size: 28px; font-weight: bold; line-height: 42px;"&gt;四、优化第三步&amp;mdash;&amp;mdash;使用存储过程&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: 28px; font-weight: bold; line-height: 42px;"&gt;　&lt;/span&gt;首先，列举一下公认的存储过程的几个优点：&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: 宋体; font-size: 15px; line-height: 22px;"&gt;&lt;span style="mso-special-format: bullet;"&gt;&amp;bull;&lt;/span&gt;&lt;span style="color: red; font-weight: bold;"&gt;高效：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="O1" style="language: zh-CN; margin-top: 4.8pt; margin-bottom: 0pt; margin-left: .81in; text-indent: -.31in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span style="font-size: 15px; font-family: 宋体;"&gt;&lt;span style="mso-special-format: bullet;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="color: black;"&gt;存储过程只在建立时编译，以后每次执行就不需要重新编译，而一般&lt;/span&gt;&lt;span style="color: black;"&gt;SQL&lt;/span&gt;&lt;span style="color: black;"&gt;语句每执行一次都需要先分析，然后再执行，所以使用存储过程可提高&lt;/span&gt;&lt;span style="color: black;"&gt;SQL&lt;/span&gt;&lt;span style="color: black;"&gt;语句的执行效率。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="O1" style="language: zh-CN; margin-top: 4.8pt; margin-bottom: 0pt; margin-left: .81in; text-indent: -.31in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;/div&gt;&lt;div class="O1" style="language: zh-CN; margin-top: 4.8pt; margin-bottom: 0pt; margin-left: .81in; text-indent: -.31in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span style="font-size: 15px; font-family: 宋体;"&gt;&lt;span style="mso-special-format: bullet;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="color: black;"&gt;存储过程代码直接存储于数据库中，不会产生大量&lt;/span&gt;&lt;span style="color: black;"&gt;T-&lt;/span&gt;&lt;span style="color: black;"&gt;sql&lt;/span&gt;&lt;span style="color: black;"&gt;语句的代码流量，显著降低了网络流量。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="O1" style="language: zh-CN; margin-top: 4.8pt; margin-bottom: 0pt; margin-left: .81in; text-indent: -.31in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;/div&gt;&lt;div style="language: zh-CN; margin-top: 5.76pt; margin-bottom: 0pt; margin-left: .38in; text-indent: -.38in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span style="font-size: 15px; font-family: 宋体;"&gt;&lt;span style="mso-special-format: bullet;"&gt;&amp;bull;&lt;/span&gt;&lt;span style="color: red; font-weight: bold;"&gt;安全：&lt;/span&gt;&lt;span style="color: black;"&gt;存储过程执行时，使用的是参数化的&lt;/span&gt;&lt;span style="color: black;"&gt;SQL&lt;/span&gt;&lt;span style="color: black;"&gt;语句，防止了常见的如&lt;/span&gt;&lt;span style="color: black;"&gt;SQL&lt;/span&gt;&lt;span style="color: black;"&gt;注入攻击等。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="language: zh-CN; margin-top: 5.76pt; margin-bottom: 0pt; margin-left: .38in; text-indent: -.38in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span style="font-size: 15px; font-family: 宋体;"&gt;&lt;span style="mso-special-format: bullet;"&gt;&amp;bull;&lt;/span&gt;&lt;span style="color: red; font-weight: bold;"&gt;可复用，可维护性高：&lt;/span&gt;&lt;span style="color: black;"&gt;更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="language: zh-CN; margin-top: 5.76pt; margin-bottom: 0pt; margin-left: .38in; text-indent: -.38in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span style="font-size: 15px; font-family: 宋体;"&gt;&lt;span style="color: black;"&gt;　 &amp;nbsp;由于分词过程中需要大量重复的执行SQL语句，那到底使用存储过程对于执行效率有没有提高呢，那我们一试：&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="language: zh-CN; margin-top: 5.76pt; margin-bottom: 0pt; margin-left: .38in; text-indent: -.38in; text-align: left; direction: ltr; unicode-bidi: embed; vertical-align: baseline; mso-line-break-override: restrictions; punctuation-wrap: simple;"&gt;&lt;span face="宋体" style="font-family: 宋体;"&gt;&lt;span face="宋体" style="font-family: 宋体;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 22px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;&lt;span color="#0000ff" style="color: #0000ff;"&gt;    USE &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Splitter&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;***** 对象:  StoredProcedure [dbo].[IsExist]    脚本日期: 05/07/2011 01:34:56 *****&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; ANSI_NULLS &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; QUOTED_IDENTIFIER &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;IsExist&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;(&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;@item&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;@result&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; output&lt;br /&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; NOCOUNT &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@result&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;count&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; Vocabulary &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; item &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@item&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;&lt;/div&gt;&lt;span face="宋体" style="font-family: 宋体;"&gt;&lt;span face="宋体" style="font-family: 宋体;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 22px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;程序中详细调用步骤：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;&lt;span color="#0000ff" style="color: #0000ff;"&gt;     bool &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;isExist(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; str)&lt;br /&gt;{&lt;br /&gt;      SqlConnection con &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new &lt;/span&gt;&lt;span style="color: #000000;"&gt;SqlConnection(ConfigurationManager.ConnectionStrings[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ConnectionString&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;].ToString());&lt;br /&gt;      con.Open();&lt;br /&gt;      SqlCommand cmd &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SqlCommand(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;IsExist&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, con);&lt;br /&gt;      cmd.CommandType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CommandType.StoredProcedure;&lt;br /&gt;      cmd.Parameters.Add(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SqlParameter(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;@item&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,   SqlDbType.VarChar, &lt;/span&gt;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;      cmd.Parameters[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;@item&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; str;&lt;br /&gt;      cmd.Parameters.Add(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SqlParameter(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;@result&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,   SqlDbType.Int));&lt;br /&gt;      cmd.Parameters[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;@result&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Direction &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ParameterDirection.Output;&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; result &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cmd.ExecuteNonQuery();&lt;br /&gt;      con.Close();&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; Convert.ToBoolean(result); &lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;再次对1000字的文本进行测试，时间有小幅提升，大致在1.3秒左右，较之前有25%左右的性能提升。&lt;/p&gt;&lt;h1 class="MsoNormal"&gt;　五、总结&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;至此算是完成了本分词软件的所有研究，进行一个总结示例如下（其中V5.0和V6.0合并在上篇一起讲了）：&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011072217284783.jpg" alt="" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;不过这还木有完结，下篇将是最后一篇，讲述本分词软件移植BS时的最后展示效果。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2114205.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/22/my-word-segmentation-software-part-six.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/13/programming-memorandum-five.html</id><title type="text">编程心语（五）—— Summer Vacation Job Diary（July）</title><summary type="text">Update：2011-07-13 July again , I reviewed my blog posts , and surprisedly found out that I started the internship on July 12, 2010 , For now , July 13, 2011, an entire year , what a coincidence. Ok, I hope I can get something new from it , new programming skills , new project experience , etc. ...</summary><published>2011-07-13T08:32:00Z</published><updated>2011-07-13T08:32:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/13/programming-memorandum-five.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/13/programming-memorandum-five.html"/><content type="html">&lt;p&gt;&lt;strong&gt;Update：2011-07-13&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;July again , I reviewed my blog posts , and surprisedly found out that I started the &lt;span id="tran_2_4" onmouseover="LjHighlightAlign('#src_2_5,#tran_2_4')" onmouseout="LjUnhighlightAlign('#src_2_5,#tran_2_4')"&gt;internship&lt;/span&gt; on July 12, 2010 , For now , July 13, 2011, an entire year , what a coincidence.&lt;/p&gt;&lt;p&gt;Ok, I hope I can get something new from it , new programming skills , new project experience , etc.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Come on.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2105463.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/13/programming-memorandum-five.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html</id><title type="text">基于.NET的分词软件设计与实现V5.0--使用Hashtable和HashSet&amp;lt;T&amp;gt;提高分词效率</title><summary type="text">上篇使用了SortedList，对分词的性能有了显著的改进，但是有一点偶没有提，那就是构造词典的时间，由于SortedList需要保证元素的有序性，所以对于我使用的20+万的词典来说，构造时间也达到了10秒左右，因此与之前的三个版本相比，虽然分词的性能大幅提升，但总的时间并没有什么改进，所以使用SortedList的方案自然也不可行，那让我们看看之前提到的Hashtable表现如何。一、Hashtable的优势——高效的查找 时间复杂度： 这无疑是Hashtable最大的优势所在，对于之前提到的数据结构：ArrayList采用顺序查找，时间复杂度为O(n)，而SortedList采用二分查找.</summary><published>2011-07-03T01:13:00Z</published><updated>2011-07-03T01:13:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html"/><content type="html">&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html" class="postTitle2" id="ctl03_TitleUrl"&gt;&lt;span color="#399ab2" style="color: #399ab2;"&gt;上篇&lt;/span&gt;&lt;/a&gt;使用了SortedList，对分词的性能有了显著的改进，但是有一点偶没有提，那就是构造词典的时间，由于SortedList需要保证元素的有序性，所以对于我使用的20+万的词典来说，构造时间也达到了10秒左右，因此与之前的三个版本相比，虽然分词的性能大幅提升，但总的时间并没有什么改进，所以使用SortedList的方案自然也不可行，那让我们看看之前提到的Hashtable表现如何。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;一、Hashtable的优势&amp;mdash;&amp;mdash;高效的查找&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;时间复杂度：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这无疑是Hashtable最大的优势所在，对于之前提到的数据结构：ArrayList采用顺序查找，时间复杂度为O(n)，而SortedList采用二分查找，时间复杂度为O(logN)，而Hashtable则是O(1)。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;　 &lt;strong&gt;原理：&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;当Hashtable添加数据时，(例如:hash.Add(key)) 首先调用当前键值key的GetHashCode()方法，得到哈希值（该值为Int32），取该哈希值的绝对值跟内部数组（上面代码的buckets）的总容量进行余运算(就是'%'操作)，得到一个小于总容量的值，把该值当做数组序号，存在对应的位置。&lt;/p&gt;&lt;p align="left"&gt;Hashtable之所以查找高效，是因为其存储的元素都是通过键值对的形式进行存储的，需要某个元素的值时，可通过映射Key值，找到数组中对应的索引位置，然后取出元素，整个过程无需循环。&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;　&amp;nbsp;&amp;nbsp;代价：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;哈希表高效的查找是有代价的，那就是内存，不过，介于现在硬件的发展速度，这种用空间换时间的做法显然没有任何压力。&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;二、Hashtable的不足&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;strong&gt;1、哈希表不能有重复键值&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;这意味着我们在进行哈希表构造时，需要在添加元素时进行判断，若其Key值不存在，则不用重复添加，否则报错。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;2、哈希表会占用更多内存&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;之前提到哈希表高效的查找是以内存为代价的，而原理又是怎样的呢？&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p align="left"&gt;首先，我们实例化ArrayList或List&amp;lt;T&amp;gt;的时候,如果不指定容量,则其内部是赋值为一个静态的空数组。当有添加操作时，会实例化为一个长度为4的数组，如果容量满了以后，再添加，就会自动扩充为两倍的容量。所以使用ArrayList和List &amp;lt;T&amp;gt;的时候，建议在实例化方法里指定容量。&lt;/p&gt;&lt;p align="left"&gt;哈希表也有一个类似的情况，new Hashtable()如果不指定长度，则会将内置bucket数组的长度默认指定为11。如果给定一个值如new Hashtable(20)，也并不会将bucket数组长度设置为20，而是循环内部一个素数数组,设置为刚好大于20的素数（此处是23，由此可知，哈希表内部存取数组长度总是一个素数）。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;此外，哈希表在未存满的情况下就要扩充： Hashtable有一个加载因子为0.72f。实际能存储的数据量等于内部长度* 0.72f。也就是说在Hashtable中，假如初始化了100个位置，只有72个可用，其他28个不能用，但仍然要占着地方。由于哈希算法本身的特点，哈希表内部存取数组长度总是一个素数，所以当需要扩充时，新的数组长度是刚好大于原数组二倍长度的素数，也就是说略大于二倍。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;三、Hashtable&amp;mdash;&amp;mdash;Q&amp;amp;A&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;其实，在刚接触Hashtable的时候，就看到一句话，也是上文提到的&amp;mdash;&amp;mdash;哈希表内部存取数组长度总是一个素数，比较不解，如果你和我当时一样有着相同的疑问，那么下面的话希望能够解答。&lt;/p&gt;&lt;p align="left"&gt;哈希表大小为素数在理论上是有依据的，针对不同的哈希算法有不同的证明。例如，对于平方探测法，有如下定理：如果使用平方探测，且表大小是素数，那么当表至少有一半是空的时候，总能够插入一个新的元素。&lt;/p&gt;&lt;p&gt;hash函数用质数来做模运算(%)，分析发现,如果不是用质数来做模运算的话，很多生活中的数据分布会集中在某些点上，所以需要采用质数做模的除数。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;因为用质数做了模的除数，自然存储空间的大小也用质数了，因为模完之后,数据是在[0-所选质数]之间。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;四、HashSet&amp;lt;T&amp;gt;对于Hashtable的改进&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;之前提到的一个Hashtable不允许添加重复值，所以我们构造词典的时候代码会是这样：&lt;/p&gt;&lt;p align="left"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070223270234.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="left"&gt;可以看到Hashtable是使用键-值方式进行存储的，但有些时候，我们只需要其中一个值，比如上图所示的情况，我只需要词典中的词，对于value我们不需要进行设置，所以这样就造成了内存浪费。&lt;/p&gt;&lt;p align="left"&gt;不过其实有一种数据结构可以改变这样的情况，那就是HashSet&amp;lt;T&amp;gt;，HashSet&amp;lt;T&amp;gt;只保存一个值，所以更加适合处理这种情况。&lt;/p&gt;&lt;p&gt;HashSet&amp;lt;T&amp;gt;每条数据只保存一项，并不采用Key-Value的方式，换句话说，HashSet&amp;lt;T&amp;gt;中的Key就是Value，假如已经知道了Key，也没必要再查询去获取Value，需要做的只是检查值是否已存在。&lt;/p&gt;&lt;p&gt;HashSet&amp;lt;T&amp;gt;的Add方法返回bool值，在添加数据时，如果发现集合中已经存在，则忽略这次操作，并返回false值。而Hashtable和Dictionary&amp;lt;TKey,TValue&amp;gt;碰到重复添加的情况会直接抛出错误。&lt;/p&gt;&lt;p align="left"&gt;但HashSet&amp;lt;T&amp;gt;不能使用下标来访问元素，如：hs[1]。&lt;/p&gt;&lt;p align="left"&gt;所以上面的代码就可以写作：&lt;/p&gt;&lt;p align="left"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070223345039.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p align="left"&gt;看着舒心了些吧。。。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;五、HashSet&amp;lt;T&amp;gt;在个人分词软件中的应用效果&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;好了，介绍的差不多，来看下最终的效果吧，以之前的那个完整的测试文本进行测试：&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070223362441.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="left"&gt;启动毫无压力，运行结果也灰常满意。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;到此为此，介绍了个人在分词软件上对于算法、数据结构等方面的研究、测试与改进，最后的这个HashSet&amp;lt;T&amp;gt;的词典版本，也是个人的最终版本。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;不过之前的所有测试使用的词典都是以文本形式存储的，下篇将介绍使用数据库进行词典存储后，分词软件的性能表现及相关改进。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;本文部分内容参考了园子里面的文章，在此附上友情链接：&lt;a href="http://www.cnblogs.com/hkncd/archive/2011/05/06/2035684.html"&gt;http://www.cnblogs.com/hkncd/archive/2011/05/06/2035684.html&lt;/a&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。 &lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2096555.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/03/my-word-segmentation-software-part-five.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html</id><title type="text">基于.NET的分词软件设计与实现V4.0--使用SortedList提高分词效率</title><summary type="text">隔了一段时间，忙其他的去了，下面继续偶之前的分词软件。 在之前的3个版本里，我们已经实现了分词的基本功能，并对其合理性等作了大量的测试评估工作，但是性能的提升还很不如意，所以这里我提出了使用SortedList提高分词效率的方案。 C#中提供了众多集合类的数据结构，如大家常用的List&lt;T&gt;，Dictionary&lt;T&gt;等，这里我将着重介绍一下SortedList，并实现其在偶的分词软件中的应用。 一、SortedList简介引自MSDN： SortedList 元素可通过其键来访问 （如任意 IDictionary 实现中的元素），或通过其索引来访问（如任意 IList</summary><published>2011-07-02T14:49:00Z</published><updated>2011-07-02T14:49:00Z</updated><author><name>RockyXiang</name><uri>http://www.cnblogs.com/RockyMyx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html"/><content type="html">&lt;p&gt;隔了一段时间，忙其他的去了，下面继续偶之前的分词软件。&lt;/p&gt;&lt;p&gt;在之前的3个版本里，我们已经实现了分词的基本功能，并对其合理性等作了大量的测试评估工作，但是性能的提升还很不如意，所以这里我提出了使用SortedList提高分词效率的方案。&lt;/p&gt;&lt;p&gt;C#中提供了众多集合类的数据结构，如大家常用的List&amp;lt;T&amp;gt;，Dictionary&amp;lt;T&amp;gt;等，这里我将着重介绍一下SortedList，并实现其在偶的分词软件中的应用。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;一、SortedList简介&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;引自MSDN：SortedList 元素可通过其键来访问 （如任意 IDictionary 实现中的元素），或通过其索引来访问（如任意 IList 实现中的元素）。&lt;br/&gt;&lt;br/&gt;SortedList 在内部维护两个数组以存储列表中的元素；即，一个数组用于键，另一个数组用于相关联的值。每个元素都是一个可作为 DictionaryEntry 对象进行访问的键/值对，键不能为空引用（在 Visual Basic 中为 Nothing），但值可以。 SortedList 的容量是 SortedList 可以保存的元素数。SortedList 的默认初始容量为 0。随着元素添加到 SortedList 中，在需要时可以通过重新分配自动增加容量。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。&lt;br/&gt;&lt;br/&gt;SortedList 的元素将按照特定的 IComparer 实现（在创建 SortedList 时指定）或按照键本身提供的 IComparable 实现并依据键来进行排序。不论在哪种情况下，SortedList 都不允许重复键。 索引顺序基于排序顺序。当添加元素时，元素将按正确的排序顺序插入 SortedList，同时索引会相应地进行调整。当移除元素时，索引也会相应地进行调整。因此，当在SortedList 中添加或移除元素时，特定键/值对的索引可能会更改。 由于要进行排序，所以在 SortedList 上操作比在 Hashtable 上操作要慢。但是，SortedList 允许通过相关联键或通过索引对值进行访问，可提供更大的灵活性。 可使用一个整数索引访问此集合中的元素。此集合中的索引从零开始。 C# 语言中的 foreach 语句（在 Visual Basic 中为 for each）需要集合中每个元素的类型。由于 SortedList 的每个元素都是一个键/值对，因此元素类型既不是键的类型，也不是值的类型。而是 DictionaryEntry 类型。&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;二、SortedList介绍&amp;mdash;&amp;mdash;个人整理&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;我们知道对于List&amp;lt;T&amp;gt;等集合，在查找某个元素是否存在时使用的是&lt;strong&gt;顺序遍历查找法&lt;/strong&gt;，这样查询的偶然性比较大，效率低，而SortedList则采用了&lt;strong&gt;二分查找法&lt;/strong&gt;，显著提高了查找效率（二分查找的介绍就略了吧）。&lt;/p&gt;&lt;p&gt;SortedList保存数据时和哈希表一样用Key-Value的方式进行存储，但不同的是，它把Key和Value分别保存在两个object[]数组中，每次插入删除操作都会保持这两个object[]大小的同步性。&lt;/p&gt;&lt;p align="left"&gt;SortedList在初始化时如果不指定大小，则会给一个默认的十六进制值0x10（16），在添加操作中，如果容量不足则会自动扩充为2倍容量，这些与ArrayList和Hashtable相同。&lt;/p&gt;&lt;p align="left"&gt;SortedList的独特之处在于它保证数据的&lt;strong&gt;有序性&lt;/strong&gt;，这点是如何保证呢？&lt;/p&gt;&lt;p align="left"&gt;原来，在Add（key，value）方法中，SortedList会首先用二分查找插入的key值，如果有重复项，则报错，如果没有重复项，则根据key值大小，比较得出在集合中的位置，然后插入到该位置中，反编译查看源代码如下：&lt;/p&gt;&lt;div onclick="cnblogs_code_show('731ada6e-a530-4e52-b16f-87ac521fb8cf')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_731ada6e-a530-4e52-b16f-87ac521fb8cf" /&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('731ada6e-a530-4e52-b16f-87ac521fb8cf',event)" class="code_img_opened" id="code_img_opened_731ada6e-a530-4e52-b16f-87ac521fb8cf" style="display: none;" /&gt;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_731ada6e-a530-4e52-b16f-87ac521fb8cf"&gt;&lt;div&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Add(TKey key, TValue value)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (key &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;System.ThrowHelper.ThrowArgumentNullException(System.Exceptio&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;nArgument.key);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;   &lt;strong&gt;&lt;span style="color: #008e00;"&gt;//二分查找&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008e00;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; num &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Array.BinarySearch&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;TKey&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.keys, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size, key, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.comparer);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (num &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;System.ThrowHelper.ThrowArgumentException(System.ExceptionResource.Argument_AddingDuplicate);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Insert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #000000;"&gt;num, key, value);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Insert(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; index, TKey key, TValue value)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.keys.Length)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.EnsureCapacity(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (index &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt; &lt;span style="color: #000000;"&gt;Array.Copy(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.keys, index, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.keys, index &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; index);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt; &lt;span style="color: #000000;"&gt;Array.Copy(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.values, index, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.values, index &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; index);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.keys[index] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; key;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.values[index] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; value;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;._size&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.version&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;由于要进行排序，所以在 SortedList 上操作比在 Hashtable 上&lt;strong&gt;操作要慢&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;但是，SortedList 允许通过相关联键或通过索引对值进行访问，可提供更大的&lt;strong&gt;灵活性&lt;/strong&gt;，因为SortedList&amp;nbsp;兼容了 Hashtable 和 Array 的特征，当使用 Item 索引器属性按照元素的键访问元素时，其行为类似于 Hashtable，当使用 GetByIndex 或 SetByIndex 按照元素的索引访问元素时，其行为又类似于 Array。所以对于Hashtable来说，用object型的Key值来匹配，而对于ArrayList来说，则用int型的下标序号来获取，而SortedList由于兼有二者的特征，所以既可以用object型的key获取，也可以用int型的序号来获取，从而提高了数据访问的灵活性。&lt;/p&gt;&lt;p&gt;示例如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Main()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;    ArrayList arrList &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ArrayList();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;    arrList.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;rocky&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;    Console.WriteLine(arrList[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;    Hashtable ht &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Hashtable();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;    ht.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;rocky&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;    Console.WriteLine(hash[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;    SortedList sortedList &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SortedList();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;    sortedList.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;rocky&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;    sortedList.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;hobby&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;coding&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;    Console.WriteLine(sortedList[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;    Console.WriteLine(sortedList.GetByIndex(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;此外，SortedList还有泛型版本：SortedList&amp;lt;TKey,TValue&amp;gt;，为了减少装箱拆箱带来的困扰，肯定优先使用泛型版本。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;优点：&amp;nbsp; 1、SortedList在添加元素时保证了集合中数据的有序性，并通过二分查找，显著提高了元素的查找效率。&lt;/p&gt;&lt;p&gt;　&amp;nbsp; 2、SortedList兼容了ArrayList和Hashtable的数据访问方式，提高了数据访问的灵活性。&lt;/p&gt;&lt;p&gt;缺点：&amp;nbsp; SortedList为了保证数据的有序性，所以构建时间较为耗时。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;三、SortedList&amp;lt;TKey,TValue&amp;gt;在个人分词软件中的应用&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先，相对于&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/06/15/my-word-segmentation-software-part-three.html" class="postTitle2" id="ctl03_TitleUrl"&gt;第三个版本&lt;/a&gt;来说，这里将List&amp;lt;string&amp;gt; _dict = new List&amp;lt;string&amp;gt;();的词典构造方式改为：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;SortedList&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dict &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SortedList&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p align="left"&gt;&amp;nbsp;随后调用_dict的Add方法进行词典构造即可。&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;四、SortedList&amp;lt;TKey,TValue&amp;gt;在个人分词软件中的应用效果&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;其实，说了上面一大通，就是为了看选择SortedList这样的数据结构后能不能使分词性能得到显著的提升，还记得之前对1000字左右的文本进行分词，时间大概在8、9秒的样子，那下面就看一下SortedList的表现。&lt;/p&gt;&lt;p align="left"&gt;下面是之前的测试文本：&lt;/p&gt;&lt;p align="left"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070222433977.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;下面进行分词：&lt;/p&gt;&lt;p align="left"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070222440613.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p align="left"&gt;简直毫无压力。随后来点狠的，直接上之前&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/06/05/my-word-segmentation-software-part-two.html" class="postTitle2" id="ctl03_TitleUrl"&gt;2.0版&lt;/a&gt;中提到的完整的测试文本，看下分词效果：&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/56505/2011070222454567.jpg" style="display: block; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;依然毫无压力，可以看到每1000字的分词效率从之前的8、9秒一下提到了100毫秒左右，可以说是质的飞跃，也可以很好地看到SortedList在数据查找方面的优势。&lt;/p&gt;&lt;p&gt;下篇将使用上面提到的另一种数据结构&amp;mdash;&amp;mdash;Hashtable进行测试。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;系列索引：&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/05/31/my-word-segmentation-software-index.html" class="postTitle2" id="ctl03_TitleUrl"&gt;基于.NET的分词软件设计与实现索引&lt;/a&gt;&lt;/p&gt;&lt;div style="background-color: #dbeaff; padding-left: 15px; width: 750px; height: 75px; margin-left: 30px; padding-top: 10px; border: #d5dfe5 1px solid;"&gt;作者：Rocky翔&lt;br /&gt;出处：http://www.cnblogs.com/RockyMyx/&lt;br /&gt;本文版权归作者和博客园共有，欢迎转载，但请在文章明显位置给出原文连接，否则保留追究法律责任的权利。 &lt;/div&gt;&lt;img src="http://www.cnblogs.com/RockyMyx/aggbug/2085381.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RockyMyx/archive/2011/07/02/my-word-segmentation-software-part-four.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
