document.write('
在算法设计中,经常会采用空间换时间的方法以降低时间复杂度,即通过增加额外的存储空间来达到优化算
法性能的目的。就本题而言,假设字符串中只使用ASCH字符,由于ASCII字符共有256个(对应的编码为0~
255),在实现的时候可以通过申请大小为256的数组来记录各个字符出现的个数,并将其初始化为0,然后遍
历第一个字符串,将字符对应的ASCII码值作为数组下标,把对应数组的元素加1,然后遍历第二个字符串,
把数组中对应的元素值减1。如果最后数组中各个元素的值都为0,那么说明这两个字符串是由相同的字符所
组成的;否则,这两个字符串是由不同的字符所组成的。实现代码如下:
 """
 方法功能: 判断两个字符串是否为换位字符串
 输入参数: s1与s2为两个字符串
 返回值: 如果是返回true, 否则返回false
 """
 def compare(s1,s2):
 result=True
 bCount=[None]*256
 i=0
 while i<256:
 bCount[i]=0
 i+=1
 i=0
 while i<len(s1):
 bCount[ord(list(s1)[i])-ord(\'0\')]+=1
 i+=1
 i=0
 while i<len(s2):
 bCount[ord(list(s2)[i])-ord(\'O\')]-=1
 i+=1
 i=0
 while i<256:
 if bCount[i]!=0:
 result=False
 break;
 i+=1
 return result;
 
 if __name__=="__main__":
 str1="aaaabbc";
 str2="abcbaaa";
 print str1+"和"+str2,
 if compare(str1,str2):
 print "是换位字符"
 else:
 print "不是换位字符"
 程序的运行结果为:
 aaaabbc和abcbaaa是换位字符
 算法性能分析:
 这种方法的时间复杂度为O(N)。

 

');