[每日练习]面试题--某个短字符串中的字符是否包含在长串中
来源:互联网 发布:男士冬季搭配 知乎 编辑:程序博客网 时间:2024/06/05 22:52
问题描述:
给出一个长串和短串,都是由普通字符组成的。要求检测短串中的所有字符是否都出现在长串中,如果是短串中重复出现某个字符,则长串中也必须出现相应次数的这个字符(次数大于等于短串种的次数)。
解题思路:
遍历短串,统计每个字符出现的次数,记录在一个bitmap数组中,因为字符的数值范围有限,所以我们的bitmap数组长度只需要128或256。
然后遍历长串,和bitmap中相应的记录对比,如果bitmap中记录的所有字符和次数都出现过了,就结束。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CHAR_VALUE (128)
static int FindSubStrInLargeStr(const char *Lstr, const char *Sstr)
{
int bitmap[MAX_CHAR_VALUE];
int idx, sum;
const char *p;
sum = 0;
memset(bitmap, 0, sizeof(int)*MAX_CHAR_VALUE);
p = Sstr;
while(*p)
{
idx = *p++;
if(idx>0 && idx<MAX_CHAR_VALUE)
{
sum++;
bitmap[idx]++;
}
}
p = Lstr;
while(*p)
{
idx = *p++;
if(idx>0 && idx<MAX_CHAR_VALUE && bitmap[idx]>0)
{
sum--;
bitmap[idx]--;
if(sum == 0)
{
printf("found\n");
return 1;
}
}
}
printf("not found\n");
return 0;
}
int main()
{
FindSubStrInLargeStr("lfsowdqiubeuwraoinvjnkcwjaoirunsajnfkdsajfjcs", "aabcc");
return 0;
}
- [每日练习]面试题--某个短字符串中的字符是否包含在长串中
- [每日练习]面试题--判断某个字符串是否为另一个字符串旋转得到的
- [每日练习]面试题--判断某个字符串是否为另一个字符串旋转得到的(Java)
- 【每日面试题】在字符串中删除特定的字符
- 判断字符串是否包含某个字符
- js处理字符串是否包含某个字符
- String 判断字符串是否包含某个字符
- 【每日面试题】判断字符串是否对称
- 面试题——字符串中的字符是否唯一
- 求职面试题(两个字符串是否包含相同的字符)
- 短字符串a中的字母是否都包含在长字符串b中
- 判断一个字符串中是否包含某个字符
- 判断一个字符串中是否包含某个字符
- JAVA 判断字符串是否包含某个字符 正则表达式
- java 判断一个字符串是否包含某个字符
- java 判断一个字符串是否包含某个字符
- 判断短字符串中的每个字符是否在长字符串都存在
- 判断短字符串中的所有字符是否在长字符串中全部出现
- shell脚本远程升级数据库
- 设置光标
- MFC中OnDraw与OnPaint的区别
- 递归解决全排列生成算法
- 机房收费系统总结
- [每日练习]面试题--某个短字符串中的字符是否包含在长串中
- Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"
- uitableviewcell
- MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memor
- C++中引用的本质是什么?
- 第一次实验课课堂笔记
- Linux内存管理图解(逻辑-线性-物理)
- ok6410学习之芯片内部初始化之led始化
- iphone数据存储之-- Core Data的使用(一)