从一个题看python凶残
2014-03-07 13:14
127 查看
这几天看python感觉很不适应,刚好有人问一个算法题。我第一思路用c实现一遍,时间复杂度n空间复杂度大点,后想到用python发现python凶残的无语。
编写一个函数,实现的功能是在A字符串中没有出现但是在B字符串中出现,把在B字符串中出现的字符保存到字符串U中,并输出字符串U;例如:A字符串“ADCEF",B字符串“gg”,则字符串U是“gg”
c代码如下:
python代码
这里没有存储直接打印虽然目前不会写测试python运行时间,但从代码量上看python提高生产力是无可置疑的
编写一个函数,实现的功能是在A字符串中没有出现但是在B字符串中出现,把在B字符串中出现的字符保存到字符串U中,并输出字符串U;例如:A字符串“ADCEF",B字符串“gg”,则字符串U是“gg”
c代码如下:
#include<iostream> /* 函数功能:查找在A字符串中有而B字符中没,并输出到out中 */ static void difstr(const char *source,const char *dest,char *out) { if(dest==NULL){*out='\0';return;} if(source==NULL){memcpy(out,dest,strlen(dest)+1);return;} char hash[256]; int len1=strlen(source); memset(hash,0,sizeof(hash)); for(int i=0;i<len1;i++) hash[source[i]]=1; len1=strlen(dest); for(int i=0;i<len1;i++) { if(!hash[dest[i]]) *out++=dest[i]; } *out='\0'; } 下面函数主要是在空间复杂度上优化,用位图思路 static void difstr1(const char *source,const char *dest,char *out) { if(dest==NULL){*out='\0';return;} if(source==NULL){memcpy(out,dest,strlen(dest)+1);return;} #define LEN(x) x/8 #define LEN1(x) x%8 char hash[LEN(256)]; memset(hash,0,sizeof(hash)); int len1=strlen(source); #define or(x,n) (x)|=(1<<(n)) for(int i=0;i<len1;i++) or(hash[LEN(source[i])],LEN1(source[i])); len1=strlen(dest); #define getbit(n,pos) (n>>pos)&1 for(int i=0;i<len1;i++) { if(!getbit((int)hash[LEN(dest[i])],LEN1(dest[i]))) *out++=dest[i]; } *out='\0'; } int main() { char *s="abc"; char *ss="ad"; char out[30]; difstr1(s,ss,out); printf("%s",out); }
python代码
for x in b: if not x in a: print(x)
这里没有存储直接打印虽然目前不会写测试python运行时间,但从代码量上看python提高生产力是无可置疑的
相关文章推荐
- 我从一个小项目学习Python编程的全过程(一)
- python实现从一组颜色中找出与给定颜色最接近颜色的方法
- Python实现:斐波那契数列、交换两个变量的值、从一组数据中找出最大最小值
- 10.python中如何从一个序列中去除重复项
- 从一个Python程序的性能说起
- 10.python中如何从一个序列中去除重复项
- python实现 从一个数组中找到完全含有另一个数组元素的最短子数组
- python从一种时间字符串格式转换到另一种时间字符串格式
- 九月必看 从一千篇Python文章中精选Top10
- 从一个简单的爬虫实例看python2和python3的区别
- 【Python笔记】从一个“古怪”的case探究CPython对Int对象的实现细节
- python网络数据采集实例-在一个网站上随机地从一个链接跳到另一个链接&采集整个网站
- python把文件从一个目录复制到另外一个目录,并且备份
- python 从一个文件夹下获取所有的文件的路径
- Python爬虫基础学习,从一个小案例来学习xpath匹配方法
- python 从一系列字符串中,找出频率最高的字符串
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
- 从一个怪异的异常看Python语言上下文环境影响机制
- 菜鸟学Python(2):学而不思则罔(从一个Python Bug谈开)
- 零基础python入门:从一个小程序开始