现在的位置: 首页 > 综合 > 正文

字符串感受(一)

2012年10月09日 ⁄ 综合 ⁄ 共 480字 ⁄ 字号 评论关闭

首先观察如下两个程序,想想他们是否有区别:

 

Part one:

int length = myString.length;

for(int i=0 ; i<length ; i++)

{

    //perform some operation

}

 

Part two:

for(int i=0 ; i<myString.length ; i++)

{

    //perform some operation

}

 

 

上述两程序的主要区别是myString的长度计算放在循环内还是循环外的区别。

第一种情况,myString的长度被计算了一次。

第二种情况,myString的长度被计算了length次。

 

实际上,还不止是上述这么点次数的区别。

 

编程语言通常使用两种方法记录字符串的长度:

一,字符串在开始处存储字符串的长度;

二,字符串在末尾以一个特殊字符标志结束。

 

在C#中,是应用第二种方法来标志字符串长度的。所以,每次计算字符串的长度,都要遍历字符串到最后的那个特殊字符。于是,针对上述的两个程序。

第一个程序的复杂度为length(字符串的长度);

第二个程序的复杂度为length * length。

 

这就是区别。。。。。

抱歉!评论已关闭.