﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-XY</title><link>http://www.cppblog.com/xuyuan77/</link><description>没有任何借口</description><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 21:26:16 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 21:26:16 GMT</pubDate><ttl>60</ttl><item><title>算法：快速排序之python实现</title><link>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215275.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Fri, 29 Sep 2017 15:04:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215275.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/215275.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/215275.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/215275.html</trackback:ping><description><![CDATA[老程序员了，还来写基础算法。本人过去多年主要做C++服务端开发，最近找工作新学python，写个快速排序练练手。<br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;numpy&nbsp;as&nbsp;np<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;sub_sort(array,low,high):<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_value&nbsp;=&nbsp;array[low]<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origLow&nbsp;=&nbsp;low<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origHigh&nbsp;=&nbsp;high<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;low&nbsp;&lt;&nbsp;high:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;low&nbsp;&lt;&nbsp;high&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;array[high]&nbsp;&gt;=&nbsp;data_value:<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;-=&nbsp;1<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;low&nbsp;&lt;&nbsp;high&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;array[high]&nbsp;&lt;&nbsp;data_value:<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[low]&nbsp;=&nbsp;array[high]<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;+=&nbsp;1<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[high]&nbsp;=&nbsp;array[low]<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[low]&nbsp;=&nbsp;data_value<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;low<br /><span style="color: #008080; ">16</span>&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;<br /><span style="color: #008080; ">18</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;quick_sort(array,low,high):<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;low&nbsp;&lt;&nbsp;high:<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key_index&nbsp;=&nbsp;sub_sort(array,low,high)<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quick_sort(array,low,key_index)<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quick_sort(array,key_index+1,high)<br /><span style="color: #008080; ">23</span>&nbsp;<br /><span style="color: #008080; ">24</span>&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">'</span>:<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;=&nbsp;np.arange(30)<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;np.random.shuffle(array)<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(array)<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quick_sort(array,0,len(array)-1)<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">"</span><span style="color: #800000; ">quick&nbsp;sort:</span><span style="color: #800000; ">"</span>,&nbsp;array)<br /><span style="color: #008080; ">31</span>&nbsp;</div><br />运行结果：<br /><br /><div>================= RESTART: D:\work\test\python\quick_sort.py =================</div><div><span style="color: #0000ff;">[ 2 19&nbsp; 7 15&nbsp; 4 11 12 17 20&nbsp; 1&nbsp; 3 18 27&nbsp; 8 14&nbsp; 0 16 22 21 13 10&nbsp; 6 28 29 26</span></div><div><span style="color: #0000ff;">&nbsp;23 24&nbsp; 5 25&nbsp; 9]</span></div><div><span style="color: #0000ff;">quick sort: [ 0&nbsp; 1&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 5&nbsp; 6&nbsp; 7&nbsp; 8&nbsp; 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24</span></div><div><span style="color: #0000ff;">&nbsp;25 26 27 28 29]</span></div><img src ="http://www.cppblog.com/xuyuan77/aggbug/215275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2017-09-29 23:04 <a href="http://www.cppblog.com/xuyuan77/archive/2017/09/29/215275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法：找出n个数中重复最多的10个数</title><link>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215273.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Fri, 29 Sep 2017 14:20:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215273.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/215273.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2017/09/29/215273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/215273.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/215273.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; font-family: Verdana, &quot;Lucida Grande&quot;, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">题目很清晰，直接上python代码。下面的解法是假设内存足够存储n个数的字典。如果内存不够，我想的解法在时间复杂度上不太理想。<br />如果内存不够，我想到的解法是在下面解法的基础上，对<span style="background-color: #eeeeee; font-size: 13px; font-family: verdana, &quot;courier new&quot;;">dictCounts存储数量设定阈值，删除出现次数较少的数对应的项，且要确保删除该数在后续数列中不再出现或出现的次数加上其总次数仍然较少。<br />这就让数据的遍历增加了不少。网上也有很多类似该题的问题并给出了解法，有的给出把数分为很多组，再对每组数找出最多的10个数，然后对找出的结果进行归并，<br />我认为其是有漏洞的，如果某个数在所有分组中并不占优，而都有出现，其就有可能被漏选掉。<br /><br />这个题是我面试时碰到的，当时想得过于复杂，还自己给自己挖坑，问数据量会不会很大，考官说了会很大，几百万，其实即使几百万对内存来讲也不是什么问题，又不是几千亿<br />，当时勉强给了个解法还有很多纰漏，自己虽然编程多年，这方面的训练还是不够。写下来反思。</span></p><div style="margin: 5px 0px; font-size: 12px; max-width: 900px;"><div style="margin-top: 5px;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;pandas&nbsp;as&nbsp;pd<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;copy<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;BenchMark:<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self):<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.MIN&nbsp;=&nbsp;10000<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.data&nbsp;=&nbsp;0<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;Reset(self):<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.MIN&nbsp;=&nbsp;10000<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.data&nbsp;=&nbsp;0<br /><span style="color: #008080; ">11</span>&nbsp;<br /><span style="color: #008080; ">12</span>&nbsp;dictCounts&nbsp;=&nbsp;{}<br /><span style="color: #008080; ">13</span>&nbsp;dictTop10_D2C&nbsp;=&nbsp;{}<br /><span style="color: #008080; ">14</span>&nbsp;BENCH_MARK&nbsp;=&nbsp;BenchMark()<br /><span style="color: #008080; ">15</span>&nbsp;LAST_BENCH_MARK&nbsp;=&nbsp;BenchMark()<br /><span style="color: #008080; ">16</span>&nbsp;run_count1&nbsp;=&nbsp;0<br /><span style="color: #008080; ">17</span>&nbsp;run_count2&nbsp;=&nbsp;0<br /><span style="color: #008080; ">18</span>&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;FindTop10(data):<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;BENCH_MARK,&nbsp;LAST_BENCH_MARK,run_count1,run_count2<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;dictCounts):<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dictCounts[data]&nbsp;+=&nbsp;1<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dictCounts[data]&nbsp;=&nbsp;1<br /><span style="color: #008080; ">25</span>&nbsp;<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;dictCounts[data]<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">just&nbsp;record&nbsp;run&nbsp;times</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;run_count1&nbsp;+=&nbsp;1<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;LAST_BENCH_MARK.MIN&nbsp;!=&nbsp;10000&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;temp&lt;&nbsp;LAST_BENCH_MARK.MIN:<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">33</span>&nbsp;<br /><span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dictTop10_D2C[data]&nbsp;=&nbsp;temp<br /><span style="color: #008080; ">35</span>&nbsp;<br /><span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(dictTop10_D2C)&gt;10:<br /><span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BENCH_MARK.Reset()<br /><span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;item&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;dictTop10_D2C:<br /><span style="color: #008080; ">39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">just&nbsp;record&nbsp;run&nbsp;times</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_count2+=1<br /><span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;dictTop10_D2C[item]&nbsp;&lt;&nbsp;BENCH_MARK.MIN:<br /><span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BENCH_MARK.MIN&nbsp;=&nbsp;dictTop10_D2C[item]<br /><span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BENCH_MARK.data&nbsp;=&nbsp;item<br /><span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LAST_BENCH_MARK&nbsp;=&nbsp;copy.deepcopy(BENCH_MARK)<br /><span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dictTop10_D2C.pop(BENCH_MARK.data)<br /><span style="color: #008080; ">48</span>&nbsp;<br /><span style="color: #008080; ">49</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;PrintData2Count(aDict):<br /><span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;key&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;aDict:<br /><span style="color: #008080; ">51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">'</span><span style="color: #800000; ">%.1f:%d</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(key,&nbsp;aDict[key]))<br /><span style="color: #008080; ">52</span>&nbsp;<br /><span style="color: #008080; ">53</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">'</span>:<br /><span style="color: #008080; ">54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df&nbsp;=&nbsp;pd.read_csv(<span style="color: #800000; ">'</span><span style="color: #800000; ">D:/data/ctp_data/rb/201709/rb1801_20170905.csv</span><span style="color: #800000; ">'</span>)<br /><span style="color: #008080; ">55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;df[<span style="color: #800000; ">'</span><span style="color: #800000; ">LastPx</span><span style="color: #800000; ">'</span>]:<br /><span style="color: #008080; ">56</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FindTop10(data)<br /><span style="color: #008080; ">57</span>&nbsp;<br /><span style="color: #008080; ">58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintData2Count(dictCounts)<br /><span style="color: #008080; ">59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">"</span><span style="color: #800000; ">==============dictCounts&nbsp;length:</span><span style="color: #800000; ">"</span>,&nbsp;len(dictCounts))<br /><span style="color: #008080; ">60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintData2Count(dictTop10_D2C)<br /><span style="color: #008080; ">61</span>&nbsp;<br /><span style="color: #008080; ">62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">"</span><span style="color: #800000; ">run_count1:%d,run_count2:%d</span><span style="color: #800000; ">"</span>&nbsp;%(run_count1,run_count2))<br /><span style="color: #008080; ">63</span>&nbsp;</div></div></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: Verdana, &quot;Lucida Grande&quot;, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">运行结果如下：</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: Verdana, &quot;Lucida Grande&quot;, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><span style="color: #0000ff;">。。。。。。</span></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: Verdana, &quot;Lucida Grande&quot;, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><span style="color: #0000ff;">4121.0:206</span><br /><span style="color: #0000ff;">4123.0:278</span><br /><span style="color: #0000ff;">4124.0:180</span><br /><span style="color: #0000ff;">4122.0:244</span><br /><span style="color: #0000ff;">4125.0:118</span><br /><span style="color: #0000ff;">4126.0:34</span><br /><span style="color: #0000ff;">4127.0:4</span><br /><span style="color: #0000ff;">4081.0:1366</span><br /><span style="color: #0000ff;">4080.0:1073</span><br /><span style="color: #0000ff;">4077.0:1072</span><br /><span style="color: #0000ff;">4078.0:1091</span><br /><span style="color: #0000ff;">4079.0:800</span><br /><span style="color: #0000ff;">4076.0:874</span><br /><span style="color: #0000ff;">4075.0:886</span><br /><span style="color: #0000ff;">4074.0:1108</span><br /><span style="color: #0000ff;">4071.0:719</span><br /><span style="color: #0000ff;">4073.0:1281</span><br /><span style="color: #0000ff;">4072.0:1049</span><br /><span style="color: #0000ff;">4070.0:567</span><br /><span style="color: #0000ff;">4069.0:442</span><br /><span style="color: #0000ff;">4068.0:290</span><br /><span style="color: #0000ff;">4067.0:199</span><br /><span style="color: #0000ff;">4066.0:204</span><br /><span style="color: #0000ff;">4065.0:109</span><br /><span style="color: #0000ff;">4064.0:60</span><br /><span style="color: #0000ff;">4063.0:80</span><br /><span style="color: #0000ff;">4062.0:57</span><br /><span style="color: #0000ff;">4061.0:70</span><br /><span style="color: #0000ff;">4060.0:70</span><br /><span style="color: #0000ff;">4059.0:32</span><br /><span style="color: #0000ff;">4057.0:6</span><br /><span style="color: #0000ff;">4058.0:22</span><br /><span style="color: #0000ff;">4129.0:6</span><br /><span style="color: #0000ff;">4137.0:2</span><br /><span style="color: #0000ff;">4135.0:2</span><br /><span style="color: #0000ff;">4133.0:2</span><br /><span style="color: #0000ff;">==============dictCounts length: 75</span><br /><span style="color: #0000ff;">4109.0:2080</span><br /><span style="color: #0000ff;">4108.0:2047</span><br /><span style="color: #0000ff;">4095.0:3009</span><br /><span style="color: #0000ff;">4096.0:2785</span><br /><span style="color: #0000ff;">4094.0:2265</span><br /><span style="color: #0000ff;">4099.0:2573</span><br /><span style="color: #0000ff;">4098.0:2702</span><br /><span style="color: #0000ff;">4097.0:2491</span><br /><span style="color: #0000ff;">4100.0:2147</span><br /><span style="color: #0000ff;">4107.0:1809</span><br /><span style="color: #0000ff;">run_count1:70684,run_count2:19679</span></p><img src ="http://www.cppblog.com/xuyuan77/aggbug/215273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2017-09-29 22:20 <a href="http://www.cppblog.com/xuyuan77/archive/2017/09/29/215273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分形的乐趣之_Hilbert曲线</title><link>http://www.cppblog.com/xuyuan77/archive/2008/10/13/63914.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Mon, 13 Oct 2008 10:45:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/10/13/63914.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/63914.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/10/13/63914.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/63914.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/63914.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 分形图是奇特而美妙的，今天我们就来看一下有趣的Hilbert曲线的生成过程及编程实现。&nbsp;&nbsp;<a href='http://www.cppblog.com/xuyuan77/archive/2008/10/13/63914.html'>阅读全文</a><img src ="http://www.cppblog.com/xuyuan77/aggbug/63914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-10-13 18:45 <a href="http://www.cppblog.com/xuyuan77/archive/2008/10/13/63914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入理解计算机系统2_信息存储</title><link>http://www.cppblog.com/xuyuan77/archive/2008/10/11/63775.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Sat, 11 Oct 2008 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/10/11/63775.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/63775.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/10/11/63775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/63775.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/63775.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 信息存储是编程的根基，为什么在网络通信中需要对字节序进行转换？<br>我们编程中经常用到的指针的本质是什么？在本文中将获得答案，<br>这是我阅读《深入了解计算机系统》第二篇读书笔记。&nbsp;&nbsp;<a href='http://www.cppblog.com/xuyuan77/archive/2008/10/11/63775.html'>阅读全文</a><img src ="http://www.cppblog.com/xuyuan77/aggbug/63775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-10-11 22:22 <a href="http://www.cppblog.com/xuyuan77/archive/2008/10/11/63775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian应用程序开发1</title><link>http://www.cppblog.com/xuyuan77/archive/2008/09/07/61249.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Sun, 07 Sep 2008 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/09/07/61249.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/61249.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/09/07/61249.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/61249.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/61249.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文主要讲述了symbian的开发过程和模拟器的简单介绍。其中给出了Helloworld示例的编译运行过程的详细介绍，供大家参考。&nbsp;&nbsp;<a href='http://www.cppblog.com/xuyuan77/archive/2008/09/07/61249.html'>阅读全文</a><img src ="http://www.cppblog.com/xuyuan77/aggbug/61249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-09-07 20:51 <a href="http://www.cppblog.com/xuyuan77/archive/2008/09/07/61249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入理解计算机系统1_程序是如何运行的</title><link>http://www.cppblog.com/xuyuan77/archive/2008/07/04/55372.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Fri, 04 Jul 2008 14:20:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/07/04/55372.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/55372.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/07/04/55372.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/55372.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/55372.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前面一个多月,在看《深入理解计算机系统》一书，才看三章，感觉收获很多，不愧是大师之作。为了能便于往后回顾，最近决定抽时间把所看的内容梳理一下，以备往后查阅。&nbsp;&nbsp;<a href='http://www.cppblog.com/xuyuan77/archive/2008/07/04/55372.html'>阅读全文</a><img src ="http://www.cppblog.com/xuyuan77/aggbug/55372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-07-04 22:20 <a href="http://www.cppblog.com/xuyuan77/archive/2008/07/04/55372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反转字符串</title><link>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52168.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Wed, 04 Jun 2008 08:22:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52168.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/52168.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52168.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/52168.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/52168.html</trackback:ping><description><![CDATA[<strong>题目：</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编写函数reverse_string，它的原型如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void reverse_string(char *str)；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;函数把参数字符串中的字符串反向排列。请使用指针而不是数组下标，不要使用任何C函数库中用于操纵字符串的函数。提示：不要声明一个局部数组来临时存储参数字符串。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><strong>算法：<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于反转字符串的方法很多。这里我给出我想到的一种算法。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_0_30_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_30_Open_Text.style.display='none'; Codehighlighter1_0_30_Closed_Image.style.display='inline'; Codehighlighter1_0_30_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_30_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_30_Closed_Text.style.display='none'; Codehighlighter1_0_30_Open_Image.style.display='inline'; Codehighlighter1_0_30_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_30_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_0_30_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">***********反转字符串***********</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;reverse_str(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str)<br><img id=Codehighlighter1_60_235_Open_Image onclick="this.style.display='none'; Codehighlighter1_60_235_Open_Text.style.display='none'; Codehighlighter1_60_235_Closed_Image.style.display='inline'; Codehighlighter1_60_235_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_60_235_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_235_Closed_Text.style.display='none'; Codehighlighter1_60_235_Open_Image.style.display='inline'; Codehighlighter1_60_235_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_60_235_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_60_235_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_111_130_Open_Image onclick="this.style.display='none'; Codehighlighter1_111_130_Open_Text.style.display='none'; Codehighlighter1_111_130_Closed_Image.style.display='inline'; Codehighlighter1_111_130_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_111_130_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_130_Closed_Text.style.display='none'; Codehighlighter1_111_130_Open_Image.style.display='inline'; Codehighlighter1_111_130_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_111_130_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_111_130_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_167_233_Open_Image onclick="this.style.display='none'; Codehighlighter1_167_233_Open_Text.style.display='none'; Codehighlighter1_167_233_Closed_Image.style.display='inline'; Codehighlighter1_167_233_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_167_233_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_167_233_Closed_Text.style.display='none'; Codehighlighter1_167_233_Open_Image.style.display='inline'; Codehighlighter1_167_233_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_167_233_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_167_233_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;算法中运用了：<span style="COLOR: red">a ^ a = 0&nbsp; 和 a ^ 0 = a</span> 的特性。以此来进行变量值的交换，可以避免使用额外的临时变量。
<img src ="http://www.cppblog.com/xuyuan77/aggbug/52168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-06-04 16:22 <a href="http://www.cppblog.com/xuyuan77/archive/2008/06/04/52168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除字符串中的子串</title><link>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52145.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Wed, 04 Jun 2008 06:09:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52145.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/52145.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/06/04/52145.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/52145.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/52145.html</trackback:ping><description><![CDATA[<strong>题目：<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;请编写一个函数，删除一个字符串的一部分。函数原型如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int del_substr(char *str, char const *substr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;函数首先应判断substr是否出现在str中。如果它并未出现，函数就返回0；如果出现，函数应该把str中位于该子串后面的所有字符复制到该子串的位置，从而删除这个子串，然后函数返回1。如果substr多次出现在str中，函数只删除第1次出现的子串。函数的第2个参数绝不会被修改。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;举个例子，假定str指向ABCDEFG。如果substr指向FGH、CDF或XABC，函数应该返回0，str未作任何修改。但如果substr指向CDE，函数就把str修改为指向ABFG，方法是把F、G和结尾的NUL字节复制到C的位置，然后函数返回1。不论出现什么情况，函数的第2个参数都不应该被修改。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要求：a.你不应该使用任何用于操纵字符串的库函数（如strcpy, strcmp, 等）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.函数中的任何地方都不应该使用下标引用。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个值得注意的是，空字符串是每个字符串的一个子串，如果字符串中删除一个空字符串不会产生变化。<br><strong>算法：<br></strong><span id=Codehighlighter1_575_1038_Open_Text>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;TRUE&nbsp;1</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;FALSE&nbsp;0</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_72_136_Open_Image onclick="this.style.display='none'; Codehighlighter1_72_136_Open_Text.style.display='none'; Codehighlighter1_72_136_Closed_Image.style.display='inline'; Codehighlighter1_72_136_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_72_136_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_136_Closed_Text.style.display='none'; Codehighlighter1_72_136_Open_Image.style.display='inline'; Codehighlighter1_72_136_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_72_136_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_72_136_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">********************************************************<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>函数声明</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;del_substr(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">substr);<br><img id=Codehighlighter1_185_248_Open_Image onclick="this.style.display='none'; Codehighlighter1_185_248_Open_Text.style.display='none'; Codehighlighter1_185_248_Closed_Image.style.display='inline'; Codehighlighter1_185_248_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_185_248_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_185_248_Closed_Text.style.display='none'; Codehighlighter1_185_248_Open_Image.style.display='inline'; Codehighlighter1_185_248_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_185_248_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_185_248_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">********************************************************<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>主函数</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_261_526_Open_Image onclick="this.style.display='none'; Codehighlighter1_261_526_Open_Text.style.display='none'; Codehighlighter1_261_526_Closed_Image.style.display='inline'; Codehighlighter1_261_526_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_261_526_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_261_526_Closed_Text.style.display='none'; Codehighlighter1_261_526_Open_Image.style.display='inline'; Codehighlighter1_261_526_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_261_526_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_261_526_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str1&nbsp;[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aabcdefgh324</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;str2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">before&nbsp;delete:&nbsp;%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;str1);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">will&nbsp;delete&nbsp;che&nbsp;chars:&nbsp;%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;str2);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;del_substr(str1,&nbsp;str2);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">After&nbsp;delete:&nbsp;%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;str1);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_528_561_Open_Image onclick="this.style.display='none'; Codehighlighter1_528_561_Open_Text.style.display='none'; Codehighlighter1_528_561_Closed_Image.style.display='inline'; Codehighlighter1_528_561_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_528_561_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_528_561_Closed_Text.style.display='none'; Codehighlighter1_528_561_Open_Image.style.display='inline'; Codehighlighter1_528_561_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_528_561_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_528_561_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**删除字符串str中包含的子串substr，不进行重复删除</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;del_substr(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">substr)<br><img id=Codehighlighter1_609_1335_Open_Image onclick="this.style.display='none'; Codehighlighter1_609_1335_Open_Text.style.display='none'; Codehighlighter1_609_1335_Closed_Image.style.display='inline'; Codehighlighter1_609_1335_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_609_1335_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_609_1335_Closed_Text.style.display='none'; Codehighlighter1_609_1335_Open_Image.style.display='inline'; Codehighlighter1_609_1335_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_609_1335_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_609_1335_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;subP;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">strP;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;flag&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;strP&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str;<br><img id=Codehighlighter1_736_759_Open_Image onclick="this.style.display='none'; Codehighlighter1_736_759_Open_Text.style.display='none'; Codehighlighter1_736_759_Closed_Image.style.display='inline'; Codehighlighter1_736_759_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_736_759_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_736_759_Closed_Text.style.display='none'; Codehighlighter1_736_759_Open_Image.style.display='inline'; Codehighlighter1_736_759_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((</span><span style="COLOR: #000000">!*</span><span style="COLOR: #000000">str)&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">substr&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_736_759_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_736_759_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**如果主串为空或子串为空字符串，则返回</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">strP)<br><img id=Codehighlighter1_805_1316_Open_Image onclick="this.style.display='none'; Codehighlighter1_805_1316_Open_Text.style.display='none'; Codehighlighter1_805_1316_Closed_Image.style.display='inline'; Codehighlighter1_805_1316_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_805_1316_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_805_1316_Closed_Text.style.display='none'; Codehighlighter1_805_1316_Open_Image.style.display='inline'; Codehighlighter1_805_1316_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_805_1316_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_805_1316_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;strP;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(subP</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">substr;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">subP;&nbsp;subP</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_884_1105_Open_Image onclick="this.style.display='none'; Codehighlighter1_884_1105_Open_Text.style.display='none'; Codehighlighter1_884_1105_Closed_Image.style.display='inline'; Codehighlighter1_884_1105_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_884_1105_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_884_1105_Closed_Text.style.display='none'; Codehighlighter1_884_1105_Open_Image.style.display='inline'; Codehighlighter1_884_1105_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_884_1105_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_884_1105_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_916_935_Open_Image onclick="this.style.display='none'; Codehighlighter1_916_935_Open_Text.style.display='none'; Codehighlighter1_916_935_Closed_Image.style.display='inline'; Codehighlighter1_916_935_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_916_935_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_916_935_Closed_Text.style.display='none'; Codehighlighter1_916_935_Open_Image.style.display='inline'; Codehighlighter1_916_935_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">strP&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">subP)</span><span id=Codehighlighter1_916_935_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_916_935_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**如果当前的主串和子串字符相等</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_949_1076_Open_Image onclick="this.style.display='none'; Codehighlighter1_949_1076_Open_Text.style.display='none'; Codehighlighter1_949_1076_Closed_Image.style.display='inline'; Codehighlighter1_949_1076_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_949_1076_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_949_1076_Closed_Text.style.display='none'; Codehighlighter1_949_1076_Open_Image.style.display='inline'; Codehighlighter1_949_1076_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_949_1076_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span>{<br><img id=Codehighlighter1_974_991_Open_Image onclick="this.style.display='none'; Codehighlighter1_974_991_Open_Text.style.display='none'; Codehighlighter1_974_991_Closed_Image.style.display='inline'; Codehighlighter1_974_991_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_974_991_Closed_Image onclick="this.style.display='none'; Codehighlighter1_974_991_Closed_Text.style.display='none'; Codehighlighter1_974_991_Open_Image.style.display='inline'; Codehighlighter1_974_991_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strP++;/**//***则主串指针向前移一个字符*/<br><img id=Codehighlighter1_1010_1036_Open_Image onclick="this.style.display='none'; Codehighlighter1_1010_1036_Open_Text.style.display='none'; Codehighlighter1_1010_1036_Closed_Image.style.display='inline'; Codehighlighter1_1010_1036_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1010_1036_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1010_1036_Closed_Text.style.display='none'; Codehighlighter1_1010_1036_Open_Image.style.display='inline'; Codehighlighter1_1010_1036_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: red">&nbsp;flag&nbsp;=&nbsp;FALSE;</span>/**//*设置为false，防止后续的主串指针，重复移动*/<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_1143_1173_Open_Image onclick="this.style.display='none'; Codehighlighter1_1143_1173_Open_Text.style.display='none'; Codehighlighter1_1143_1173_Closed_Image.style.display='inline'; Codehighlighter1_1143_1173_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1143_1173_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1143_1173_Closed_Text.style.display='none'; Codehighlighter1_1143_1173_Open_Image.style.display='inline'; Codehighlighter1_1143_1173_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">subP&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_1143_1173_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_1143_1173_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**如果subP指向末尾的'\0'则表示子串匹配成功</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1183_1288_Open_Image onclick="this.style.display='none'; Codehighlighter1_1183_1288_Open_Text.style.display='none'; Codehighlighter1_1183_1288_Closed_Image.style.display='inline'; Codehighlighter1_1183_1288_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1183_1288_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1183_1288_Closed_Text.style.display='none'; Codehighlighter1_1183_1288_Open_Image.style.display='inline'; Codehighlighter1_1183_1288_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1183_1288_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1183_1288_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1221_1232_Open_Image onclick="this.style.display='none'; Codehighlighter1_1221_1232_Open_Text.style.display='none'; Codehighlighter1_1221_1232_Closed_Image.style.display='inline'; Codehighlighter1_1221_1232_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1221_1232_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1221_1232_Closed_Text.style.display='none'; Codehighlighter1_1221_1232_Open_Image.style.display='inline'; Codehighlighter1_1221_1232_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">temp</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">strP</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_1221_1232_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_1221_1232_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**进行字符复制</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1251_1259_Open_Image onclick="this.style.display='none'; Codehighlighter1_1251_1259_Open_Text.style.display='none'; Codehighlighter1_1251_1259_Closed_Image.style.display='inline'; Codehighlighter1_1251_1259_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1251_1259_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1251_1259_Closed_Text.style.display='none'; Codehighlighter1_1251_1259_Open_Image.style.display='inline'; Codehighlighter1_1251_1259_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;</span><span id=Codehighlighter1_1251_1259_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_1251_1259_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">**空语句</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(flag)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strP</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最先str1的定义为 char *，然而就会出现while(*temp++ = *strP++)语句报错。报错误写入位置 0x00447240 时发生访问冲突，我的理解是因为字符指针temp指向的是字符串常量，不允许进行修改。所以定义为 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: red">char str1 [] <span style="COLOR: #000000">很关键。<br></span></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经上网查资料，解释是：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C++中数据存储区分为五种： <br>栈、堆（new分配）、自由存储区（malloc分配）、全局/静态变量存储区、常量存储区（不允许修改，除非采用特殊手段）。 字符串这种常量就存在常量区中。全局、静态变量放在静态存储区，而它们是可以被修改的。<br></span>
<img src ="http://www.cppblog.com/xuyuan77/aggbug/52145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-06-04 14:09 <a href="http://www.cppblog.com/xuyuan77/archive/2008/06/04/52145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>得到字符串S1中第一个且是字符串S2中的位置指针</title><link>http://www.cppblog.com/xuyuan77/archive/2008/06/03/52046.html</link><dc:creator>路缘</dc:creator><author>路缘</author><pubDate>Tue, 03 Jun 2008 09:06:00 GMT</pubDate><guid>http://www.cppblog.com/xuyuan77/archive/2008/06/03/52046.html</guid><wfw:comment>http://www.cppblog.com/xuyuan77/comments/52046.html</wfw:comment><comments>http://www.cppblog.com/xuyuan77/archive/2008/06/03/52046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuyuan77/comments/commentRss/52046.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuyuan77/services/trackbacks/52046.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天看《C和指针》一书的第6章指针，碰到编程练习的第一题，做了做，感觉差距还很大，把做的代码贴下来，以备往后温习。题目：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请编写一个函数，它在一个字符串中进行搜索，查找所有在一个给定字符集合中出现的字符。这个函数的原型如下：char *find(char const *source, char const *chars);&n...&nbsp;&nbsp;<a href='http://www.cppblog.com/xuyuan77/archive/2008/06/03/52046.html'>阅读全文</a><img src ="http://www.cppblog.com/xuyuan77/aggbug/52046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuyuan77/" target="_blank">路缘</a> 2008-06-03 17:06 <a href="http://www.cppblog.com/xuyuan77/archive/2008/06/03/52046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>