Perl 判断一个字符串中所有字符是否在另外一个字符串中出现

Perl语言的字符串处理 Perl的字符串处理功能非常强大,能够满足我们在文本处理中的多种需求。从基本的字符串操作到复杂的正则表达式,Perl的灵活性和高效性都使得它成为了文本处理的首选工具之一。通过理解和掌握Perl中的字符串处理方法,程序员可以更加自如地处理各种文本数据,也为其他语言中字符串的处理提供了宝贵的经验。应用Perl进行字符串处理,无论是简单的文本操作还是复杂的文本分析,都能展现出高效与优雅,是进行数据处理的理想选择。 阅读详情

在酷壳 – CoolShell.cn 中看到一个文章,判断一个字符串中的所有字符是否在另外一个字符串中出现,如果用循环的话时间复杂度是O(mxn),如果使用先排序后判断时间复杂度是O(mlgm)+O(nlgn)+O(m),作者面试的时候考官给出的一个思路是每个字符给一个素数,所有的树相乘,再用这个数去除另外一个字串中字符对应的数,余数为0的话则包含在第一个字串中,时间复杂度为O(m+n),思考了以下,素数比较大,相乘可能会溢出,用另外一个思路位来解决这个问题,复杂度也是O(m+n),实际效率有待验证。


一般情况下有128或者256个字串出现,每个字符对应一位,用16个(32个)8位的字符可以完全表示这些字符是否出现过,每个字符对应的位置为1即可,然后判断两个数组依次位与之后与查找的那个是否相同即可。


以下是简单的实现:

use strict;
use warnings;
use constant MAX=>15;

my %tmplate = (
	0=>0b00000001,
	1=>0b00000010,
	2=>0b00000100,
	3=>0b00001000,
	4=>0b00010000,
	5=>0b00100000,
	6=>0b01000000,
	7=>0b10000000,
	);

# 用来判断数组中第X个第Y位
sub position{
	my $tmp = shift;
	return (int ord($tmp)/8, ord($tmp)%8);
}

# 将字符串转换为一个字串,对应的字符出现的地方置为1
sub bit{
	my $str = shift;
	my @tmp = map {0b00000000} 0..MAX;
	for(split //,$str){
		my @x = position($_);
		#~ print ord," @x \n";
		$tmp[$
perl 中的字符串 1. 字符串连接 点号连接 #!/usr/bin/perl use warnings; print "go! ".4; 输出 go! 4 乘号连接 #!/usr/bin/perl use warnings; print "go! "x4; 输出 go! go! go! go! 2. 字符串比较 获取字符的 ASCII 码 函数 ord() #!/usr/bin/perl use warnings; print "a ascii is ". ord("a")."\n"; print " 阅读详情

相关推荐

EDA开源仿真工具verilator入门4:访问函数介绍

访问函数(Visitor Function)是verilator算法实现的主要工作方式之一,本节将介绍一下访问函数。

fangfanglovezhou的博客 1075

【ubuntu】如何搭建AFTR+B4环境

为何要使用ipv6 目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。 主流的ipv6方案 1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6 2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。 3.6RD方案 :

weixin_43863426的博客 2723

centos 添加新硬盘,对根目录扩容

本地安装了虚拟机,系统为centos7,使用过程中,渐渐地发现磁盘容量不够用了,于是在虚拟机中新增了一块硬盘。 进入系统内查看: sdb是新增的硬盘,大小为40g。 接下来有两种方式,一种是普通方式直接挂载。https://blog.youkuaiyun.com/qq_39314099/article/details/106200322 这样的话只有在挂载点的目录下操作才能使用到这个新硬盘,不是很理想。 还有一种方式lvm,逻辑卷管理的方式。 LVM简单介绍: 它是 Linux 下对磁盘分区进行管

qq_39314099的博客 1万+

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5547

识别产品外观的合格软件_工业视觉工业质检视觉识别机器视觉视觉检测智能制造工业检测缺陷...

随着工业物联网技术的迅猛发展,掀起了以云计算、大数据、以及人工智能 AI 等信息技术正与传统工业深入融合,由此衍生的 “智能制造4.0” 理念,正在为全球工业带来深远变革。中国的制造业巨头也纷纷借此发力,向智能化、数字化制造演进,实施战略转型。如何高效科学的管理和分析制造业务链上的生产价值,推进制造企业生产工艺优化与产品质量提升是每一个制造企业在数字化、智能化转型过程中的必经之路。业务发展带来的挑...

weixin_42502419的博客 751

【系统分析师】高分论文:论基于构件的软件开发(气象灾害影响评估系统)

本文以某手机气象灾害影响评估系统为例,探讨了基于构件技术的软件开发实践。通过分析开发中常见的功能模块重复问题,提出建立企业构件库、针对性选择构件和加强构件管理的解决方案。项目实施中成功复用登录模块等通用构件,并针对气象数据转换需求开发新构件,最终在8个月内高质量完成系统建设。文章总结了构件开发的三个关键点:构件库建设是基础、构件选择需精准、构件管理要规范。同时指出需注意全新需求开发、性能优化等问题,建议通过培训提升团队对构件的理解力。该案例证明构件技术能有效缩短周期、降低成本,为企业积累可复用的技术资产。

数据知道的博客 4253

YOLOv8 智能交通违章检测 - 机动车道占用(违停/非机动车占道)详解

本文提出基于YOLOv8的智能交通违章检测方案,主要针对机动车道占用问题。系统整合目标检测、目标跟踪和ROI区域判定,实现两种典型场景检测:违章停车(静止超时)和非机动车/行人占道。详细介绍了系统架构、配置文件设计、核心逻辑实现及可视化模块,包括ROI区域管理、状态跟踪和违章判定算法。针对实际应用中的堵车误判、非机动车误报等问题,提出了密度检测、轨迹分析和自适应阈值等优化策略。该方案计算量适中,适合边缘设备部署,并建议配套开发ROI标定工具和证据链保存功能。

u010117029的博客 235

AUTOSAR CP R18-10 架构总览与导航

AUTOSAR CP R18-10 架构总览 本文档系统整理了AUTOSAR CP R18-10版本的199篇技术规范,涵盖7大架构层级: 应用层(15篇):包含车身舒适、底盘控制、HMI、安全系统、动力系统等AI应用 RTE(1篇):虚拟功能总线规范 服务层(159篇):细分为系统服务(OS/ECU管理/加密)、存储服务、通信服务(CAN/LIN/Ethernet) ECU抽象层(20篇):I/O与通信硬件抽象 MCAL(41篇):微控制器驱动层 复杂驱动(14篇):CDD设计与SPAL支撑 规范模板(2

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 719

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Perl KMP 算法
下一篇: Perl 堆排序
Bai_Yuanyong
博客等级 码龄24年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值