求两个字符串的交集
来源:互联网 发布:淘宝回收手机被骗了 编辑:程序博客网 时间:2024/05/29 10:56
题目:给定两个字符串s1,s2,求两个串的共同字符集;如s1="abc1234def789 0g",s2="ba 209834cdxyz", 交集为 result=“ba 209834cd”
思路:先将字符串s1排序,时间复杂度为O(nlogn),遍历 s2,查找s1中是否含有s2中当前字符,如有则加入结果集result
c语言具体实现如下(IDE DEVC++ 5.7):
#include<stdio.h>#include<stdlib.h>#include<string.h>void quick_sort(char *a,int low,int high){//快速排序int x = low,y = high,i;char k = a[low];if(low >= high)return;while(x != y){while(x<y && a[y]>=k)y --; a[x] = a[y];while(x<y && a[x]<=k)x ++;a[y] = a[x];}a[x] = k;quick_sort(a,low,x-1);quick_sort(a,x+1,high);}int binary_search(char *str,int len,char value){//二分查找int low,high,middle;low = 0;high = len - 1;while(low <= high){middle = (low + high)/2;if(str[middle] == value)return 1;else if(str[middle] < value)low = middle + 1;elsehigh = middle - 1;}if(str[middle] != value)return -1;} char *str_in_common(char *s1,int len,char *s2,char *result){int i = 0;char *p;p = s2;while(*p != '\0'){if(binary_search(s1,len,*p) == 1)//查找相同字符result[i++] = *p;p ++;}result[i] = '\0';return result;} int main(){char a[] = "abc1234def789 0g";char b[] = "ba 209834cdxyz";char *r;int len = strlen(a);quick_sort(a,0,len-1);puts(str_in_common(a,len,b,r));return 0;}
0 0
- 求两个字符串的交集
- SQLServer中求两个字符串的交集
- hibernate 与MYSQL 求两个字符串数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个Collection的交集
- 求两个集合的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个集合的交集
- UNIX 高手的 10 个习惯
- [C++]va_list、va_start、va_arg、va_end宏的使用
- 厚积薄发
- 余弦距离、欧氏距离和杰卡德相似性度量的对比分析
- 闲评好声音齐秦及汪峰组决赛
- 求两个字符串的交集
- makefile 之多目录,多目标编译
- Objective-c中的占位符,打印BOOL类型数据
- zoj 2314 Reactor Cooling 无源汇网络流
- struts2文件下载
- 51Nod 1163 最高的奖励 并查集&贪心
- 大数模板
- ACdream 1210 Chinese Girls' Amusement
- Android应用开发-小巫CSDN博客客户端Jsoup篇