H面试程序(10): 字符串包含问题

H面试程序(19): 统计出现频率的最高的K的字符串 出处:http://blog.youkuaiyun.com/v_JULY_v 我做了一些详细的注释   //copyright@yansha &&July //July、updated,2011.05.08 //题目描述: //搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的 //长度为1-255字节。假设目前有一千万个记录(这些查询串 阅读详情

题目描述:判断第二个字符串中的元素是否都能在第一个字符串中找到:

注意:和字符串的字串的问题有所区别,如第一个字符串为  abcdefg,第二个字符串为 aaabc,第二个字串还是包含于第一个字符串

 

方法1:将str2中的每一个字符取出,逐一和字符串str1中的字符进行比较
#include <stdio.h>

int WhetherInclude(char*  str1, char * str2)
{
    int ia; 
	int ib = 0;
	

	while(str2[ib] !='\0') //遍历str2
	{   
		ia = 0;
		while(str1[ia]!='\0')  //遍历str1
		{   
			if(str1[ia] == str2[ib])
		    	break;
			else
				ia++;
			
		}

		if(str1[ia] == '\0') //如果经过前面的一次遍历在str1中还是没有找到相同的字符就返回false
			return 0;
		  
		ib++; //增量 来控制外循环      

		 if(str2[ib] == '\0') //如果查到str2的最后一个字符都没问题的话
            return 1;
		 
	}
}
int main()
{
	char str1[] ="abcdefg";
	char str2[] ="adgc";

	int a = WhetherInclude(str1, str2); //1代表str1包含str2;
	printf("%d\n",a);
	return 0;

}


 

方法2,使用hash数组

#include <stdio.h>
#include<malloc.h>
#include<memory.h>
#include<assert.h>

int WhetherInclude(char*  str1, char * str2)  //只能判断str2的字母是不是都在str1中,和子串的问题不一样
{
   char * phash = (char *)malloc(256*sizeof(char)); //进行一些初始化的工作
   assert(phash);
   memset(phash, 0, 256);


   int i = 0;
   while(str1[i-1] != '\0')    //将str1在phash数组中映射一遍
   {
	   phash[str1[i-1]] = 1;
       i++;
   }


   int j = 0;
   while(str2[j-1] != '\0') //将str2和str映射后的表再映射一遍,发现为0的位即不包含
   {
	   if(phash[str2[j-1]] == 0)
		   return 0;
	   j++;
   }
   return 1;
		 
	
}
int main()
{
	char str1[] ="abcdefg";   
	char str2[] ="aaagc";

	int a = WhetherInclude(str1, str2); //1代表str1包含str2;
	if(0 == a)
		printf("不是所有字符串str2中的字符在str1中都能找到!!!\n");
	else
	    printf("所有字符串str2中的字符在str1中都能找到\n");
	
	return 0;

}

字节跳动-后端开发面试 面试总结: 1.因为投的比较晚了,10月8日下午连续进行了一面,二面,三面。总的面试体验极佳,除了讨论项目经验意外,问题涉及:进程/线程,CPU调度,C/C++ 字符串区别,网络三次握手,四次挥手;项目经历;项目需求分析;MySQL数据库的两个引擎,以及比较。编程题目包括:根号2保留10位小数;如何快速的从几十万条IP地址段中确定某一个IP是否属于其中;二叉树中的和为某一值的路径;从1-10中... 阅读详情

相关推荐

关于程序员面试宝典中5.8节面试例题:编写一个函数,实现把C/C++程序代码中的注释去掉……答案的分析

因为马上要找工作了,所以,没事要看看程序员面试宝典,今天看到第5.8节(P41)程序设计的其他问题,自己思考了一下,然后看了看附带的答案,发现答案都看不太懂(大家都懂看别人的程序,没有注释,会看的很纠结),附带注释不多,看起来很吃力,看不懂,就百度,谷歌一下,看看有没有网友的分析,果然,有人分析过了,找了几篇带有注释的,然后研究下,发现按照注释来看,是明白了一点,但是觉得,有些地方分析的有错误,理

ljjee的专栏 2438

面试官一个简单的问题,让我emo了两年半

“小伙子,你擅长什么语言呢?😊😊😊” 眼前的面试官和善的问我。 “哼哼,当然是C语言,我可是C语言大佬!😋😋😋” 我骄傲不已,想着自己一定能惊艳到面试官。 面试官递给我一道题目,看到这道题目,我漏出自信迷人的微笑。

陈大大陈的博客 1万+

FLUKA软件在Ubuntu的安装指南(亲测有效)

FLUKA其强大的蒙特卡洛模拟能力使得用户能够模拟复杂的辐射相互作用过程

chencheng1127的博客 2887

H面试程序(11): 判断字符串是否包含子串问题

题目描述: 如字符串str1为''abcdef''' 字符串str2为'' bc''; 则字符串str1中含有字串str2; #include <stdio.h> #include<malloc.h> #include<memory.h> ...

weixin_30810583的博客 83

YOLOv8n模型导出ONNX的避坑指南:解决版本差异,正确生成TensorRT/RKNN所需输出节点

本文详细介绍了YOLOv8n模型导出ONNX格式的实战避坑指南,涵盖版本差异处理、代码修改技巧及TensorRT/RKNN部署优化方案。针对不同推理框架需求,提供输出节点生成、动态轴处理和后处理划分等核心问题的解决方案,帮助开发者高效完成模型部署。

weixin_33247358的博客 357

phpstudy自定义安装mysql8.3并启动

下载压缩包文件然后按下面的图片一步一步操作选择版本,选择第一个压缩包文件,下载下载完成后,解压到phpstudy环境目录下

互联网碎碎念 2802

Python程序员面试算法宝典---解题总结: 第5章 字符串 5.10 如何求字符串里的最长回文子串

# -*- coding: utf-8 -*- ''' Python程序员面试算法宝典---解题总结: 第5章 字符串 5.10 如何求字符串里的最长回文子串 题目: 回文字符串是指一个字符串从左到右与从右到左遍历得到的序列是相同的。 例如"abcba"就是回文字符串,而"abcab"则不是回文字符串。 分析: 举例: 'cdefedfghi'的最长回文串是'defed' 'abcdefe...

qingyuanluofeng的专栏 305

unity中简单全景搭建

全景场景能够直观的展现一部分区域的全貌,在全景场景中我们能360°观看周围的景象,仿佛自身就在这个场景中,在场景的外部,我们能发现场景就是一个密封的球体,我们是处在球体的内部观察周围,在球内部观察四周看到的都是球的内表面,所以我们看到的全景其实就是贴在密封球体内的一张全景图片。接下来要介绍的就是如何在unity中用一个球体来搭建全景场景。

qq_31791999的博客 3637

#2 判断一个字符串是否包含重复字符

「Google面试题」 【题目】 判断一个字符串是否包含重复字符。例如:“good”就包含重复字符‘o’,而“abc”就不包含重复字符 【题目分析】 对字符串进行遍历,统计每一个字符的个数,如果不为1则跳出遍历并返回True 【解答】 1 #!/Users/minutesheep/.pyenv/shims/python 2 # -*- coding: utf-8...

ab420036723的博客 826

2026年紫光同创数字IC笔试试卷带答案

FPGA基础知识与设计要点摘要 本文围绕FPGA与数字IC设计核心概念,通过单选题、波形分析题、多选题和简答题形式,系统梳理了以下关键知识点: FPGA基础架构 查找表(LUT)是实现组合逻辑的基本单元(题1) CLB包含LUT、触发器和进位链,后者加速算术运算(题6,10) 布局布线优化是减少关键路径延迟的核心方法(题7) 时序分析要点 建立时间(时钟沿前数据需稳定)与保持时间(时钟沿后需保持)的定义(题2,简答1) 亚稳态成因及两级同步器处理跨时钟域信号的方法(多选题1,波形题5) 特殊设计技术 异步复

Open 116

光学系统仿真软件:OSLO_(13).衍射光学元件设计v1

目标函数是设计DOE的关键步骤之一。目标函数可以是一个具体的光强分布,也可以是一个特定的波前形状。在仿真软件中,目标函数通常用数学表达式或数据文件来定义。假设我们需要设计一个二元相位掩模,使其在特定位置生成三个焦点。我们可以定义一个目标函数来描述这三个焦点的光强分布。# 定义目标函数"""定义一个多焦点目标函数:param x: 横坐标:param y: 纵坐标:param z1: 第一个焦点的深度:param z2: 第二个焦点的深度:param z3: 第三个焦点的深度。

kkchenjj的博客 1003

整理保存一下我原来用来面试 PHP程序员 的一些问题

二、因为也经常要面试PHP程序员,所以简单整理了一些题目,这边的PHP面试一般也不会采用笔试啊、一面二面之类的,一般就是面对面的聊聊问问而已,不过我觉得基本聊聊也就知道面试的人的大概水平了,水平高一点的PHP:肯定有了一定的接触知识面和深度,下面是一些可以参考的问一些。1.有些水平的PHP程序员的面试问题:A,linux定时运行命令 contrab (分时日月周的排序)---接触多肯定会接触,还有nohup。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 710

StarRocks 面试题及参考答案详解(万字详解)

Broker Load的过程通常涉及到数据的解析、转换和加载,它支持多种数据格式,并且可以处理复杂的数据导入任务。一方面,压缩可以减少磁盘I/O操作,因为压缩后的数据占用的空间更小,需要读取的数据块数量也就更少。在StarRocks中,表数据可以被划分成多个分区,每个分区包含表的一部分数据。在传统的行存储模型中,数据是按行组织的,这意味着在执行分析查询时,系统需要读取并处理整行数据,即使很多时候只需要查询其中的少数几列。物化视图的更新可以是完全重算,也可以是增量更新,取决于物化视图的定义和数据变更的模式。

大模型大数据攻城狮的专栏 2083

【经典算法】字符串旋转和包含算法

本系列为《编程之法:面试和算法心得》的读书笔记。 为了即将踏入研究生之路,特此需要做一些计算机相关基础知识的积累,以弥补算法知识,谨以此开始自己的算法学习之路。 算法1:旋转字符串 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符’a’和’b’移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能...

天堂的鸽子 555

【FF-A】第四章 Concepts

SPM的责任分为两个组件:SPM调度器(SPMD)和SPM核心(SPMC)。这两个组件都可以访问整个物理地址空间,并且是受信任的计算基础的一部分。当无需区分这两个组件时,术语SPM被使用。这些组件的责任如下所示。SPMD 位于 EL3 中,以 AArch64 或 AArch32 执行状态运行。SPMC 可以与 SPMD 共存在 EL3 中,也可以位于相邻的异常级别,即 S-EL1 或 S-EL2。SPM 在启动时初始化 EL3 LSP,并在运行时促进它们与其他端点之间的通信。

baron-周贺贺-代码改变世界ctw 1196

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

H面试程序3:去除字符串中多余的空格

比如“_ _I_ _ _Lu_ _ _  _you_ _ _ _ _ _”变成“I_ Lu_you”       #include #include //50min void RemoveExtraSpace(char* str) { assert(str); int flag = 1; //之前已经遇到空格 int newp = 0; int i

linuxlinuxlinuxlinux的专栏 2151

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

H面试程序(26):判断字符串是否定回文字符串

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa” 题目:判断一个字符串是否为回文 解法:两端扫描 #include #include int huiwen( int high, int low , char * a) //从两边扫描, num是一个中点位置 { assert(a);

linuxlinuxlinuxlinux的专栏 1152

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

程序员面试100题之七:最长公共子字符串

子字符串的定义和子串的定义类似,但要求是连续分布在其他字符串中。比如输入两个字符串BDCABA和ABCBDAB的最长公共字符串有BD和AB,它们的长度都是2。       最长公共子字符串共有两种解决方法,下面具体说说我的思路 方法一:      Longest Commo

Hackbuteer1的专栏 8万+

H面试程序(28):字符串处理转换

//2 字符串处理转换 //问题描述: //在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成, //其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词); //找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列), //然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次; //如果整个输入的字符串

linuxlinuxlinuxlinux的专栏 1347

程序员面试金典(第 6 版)

程序员面试金典(第 6 版) 力扣 (LeetCode)

[ 25'h ] 1587

c++如何让字符串重复输出_几道 BAT 算法面试中经常问的字符串问题

String 作为最常见的编程语言类型之一,在算法面试中出现的频率极高。1. 验证回文串题目来源于 LeetCode 第 125 号问题:验证回文串。这道题目是 初级程序员 在面试的时候经常遇到的一道算法题,而且面试官喜欢面试者手写!题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:"Am...

weixin_39557402的博客 435

[学习] C语言<string.h>中字符串函数全解析

C语言<string.h>字符串函数摘要 本文全面解析C标准库<string.h>中的字符串处理函数,提供函数原型说明和实用示例代码。涵盖19个核心函数:strcpy/strncpy(字符串拷贝)、strcat/strncat(字符串拼接)、strcmp/strncmp(字符串比较)、strlen(获取长度)、strchr/strrchr(字符查找)、strstr(子串查找)、strspn/strcspn(前缀匹配计算)以及strpbrk(字符集查找)。每个函数均配有完整可运行的代码

极客不孤独的博客 1968
上一篇: H面试程序(9): 左旋字符串
下一篇: H面试程序(11): 判断字符串是否包含子串问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值