面试题5:替换空格

关于DataFrame的文本数据导入 DataFrame确实使用方便,但是如果每次导入数据都需要我们自己手动实现未免太麻烦了些,以下就介绍DataFrame对不同格式文件的导入 本章仅仅介绍txt或文本文件 带标题的文本文件,例如:     name    pop eco hu c   13  2   none a   2   1   none 最简单的导入方式: import pandas as pd data=pd. 阅读详情

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入“We are happy.",则输 出“We%20are%20happy.”。
我们可以先遍历-次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。我们还是以前面的字符串"We are happy.“为例。“We are happy.“这个字符串的长度是14 (包括结尾符号"10’),里面有两个空格,因此替换之后字符串的长度是18。我们从字符串的后面开始复制和替换。首先准备两个指针: P1 和P2。PI指向原始字符串的末尾,而P2指向替换之后的字符串的末尾,如图2.4(a) 所示。接下来我们向前移动指针P,逐个把它指向的字符复制到Pz指向的位置,直到碰到第一个空格为止。此时字符串如图2.4(b)所示,灰色背景的区域是进行了字符复制(移动)的区域。碰到第一一个空格之后,把P1向前移动1格,在P2之前插入字符串”%20”。由于”%20"的长度为3,同时也要把P2向前移动3格,如图2.4 ©所示。我们接着向前复制,直到碰到第二个空格,如图2.4 (d)所示。和上一次一样,我们再把P,向前移动1格,并把P2向前移动3格插入"%20",如图2.4 (e)所示。此时P:和P2指向同一-位置,表明所有空格都已经替换完毕。从上面的分析中我们可以看出,所有的字符都只复制(移动)一次,因此这个算法的时间效率是O(n),在这里插入图片描述注:
图中带有阴影的区域表示被移动的字符。(a)把第一个指针指向字符串的末尾,把第二个指针指向替换之后的字符串的末尾。(b)依次复制字符串的内容,直至第一个指针碰到第一个空格。©把第一个空格替换成"%20",把第一个指针向前移动1格,把第二个指针向前移动3格。(d)依次向前复制字符串中的字符,直至碰到空格。(e)替换字符串中的倒数第二个空格,把第一个指针向前移动1格,把第二个指针向前移动3格。

# 面试题5 替换空格
'''
本题有2种方法:
    1.书上的方法,从后往前扫描,减少移动次数。但由于python无法创建固定长度的字符串(除非
        将字符串转换为list),所以都产生一个O(n+x*2)的空间复杂度,其中x为空格的数量。
        时间复杂度为O(n)
    2.利用python的append,从前往后扫描,遇到空格就extend字符串。但如果超过了新建的
        list,会扩容,产生一个移动的损耗。时间复杂度是O(n)

所以遇到这种问题,尝试思考从后面操作。
另外在相关题目中,可以使用的方法有点类似归并排序。
'''

# 面试题5 替换空格
def ReplaceBlank(s3):
    if not isinstance(s3,str):
        return
    lis = list(s3)
    originalLength = len(lis)
    numberOfBlank = 0
    for l in lis:
        if l==' ':
            numberOfBlank+=1
    newLength = originalLength+numberOfBlank*2
    lis_rep = [None]*newLength
    indexofOriginal,indexofnew = originalLength-1,newLength-1
    while indexofOriginal>=0:
        if lis[indexofOriginal]==' ':
            lis_rep[indexofnew]='0'
            lis_rep[indexofnew-1]='2'
            lis_rep[indexofnew-2]='%'
            indexofnew-=3
        else:
            lis_rep[indexofnew] = lis[indexofOriginal]
            indexofnew-=1
        indexofOriginal-=1
    return ''.join(map(str,lis_rep))



def ReplaceBlank1(s3):
    if not isinstance(s3,str):
        return 
    lis = list(s3)
    print(lis,'lis')
    lis_rep = []
    for i in lis:
        if  i==' ':
            lis_rep.extend(list('%20'))
        else:
            lis_rep.append(i)
        print('lis_rep:',lis_rep)
    ss = map(str,lis_rep)
    print('ss',ss)
    return ''.join(ss)

if __name__ == '__main__':
    s1 = ' We are happy '
    s2 = None
    s3 = '    '
    print(ReplaceBlank(s1))
    # print(ReplaceBlank1(s1))

python pandas消除空值和空格以及 Nan数据替换方法 今天小编就为大家分享一篇python pandas消除空值和空格以及 Nan数据替换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

239号资源-simulink仿真:MATLAB/Simulink教程(PDF文档)-----已提供下载资源

电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.《《《《《《《《更多资源还请持续关注本专栏》》》》》》》《《《《《《《《更多资源还请持续关注本专栏》》》》》》》论文与完整源程序_电网论文源程序的博客-优快云博客。电网论文源程序-优快云博客。

LIANG674027206的博客 1076

在Python中,对Dataframe形式一行数据进行切分,delimiter=‘\t‘ 与 sep=‘\t‘ 的区别

例如:如下的数据,若不设置参数,导入后每一行的的数据会是:1\t0.455\t0.365\t0.095\t0.514\t0.2245\t0.101,那么如何以'\t'为分隔符切分为多列数据呢?delimiter和 sep都用于指定分隔符,delimiter主要与处理文件时的文本解析有关,而 sep 主要与数据导入和分割字符串时有关。

m0_60040368的博客 2676

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 484

查找替换dataframe中某列数据包含的空格、nan及特殊符号

pandas: 通过pd.read_excel()函数读取数据生成dataframe,数据框中某列数据中包含文本、数字、空格、nan和方括号等特殊符号。 直接用df.replace()函数,可能存在数据类型问题,无法实现替换。先用astype函数转换为文本,然后用str.replace()函数逐一替换,可达到目的。 df[‘T-1csjz’]=df[‘T-1csjz’].astype(str).str.replace(’ ‘,’’).str.replace(’[nan’,’’).str.replace(’

Running_sdeer的博客 4566

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 210

离线反激转换器反馈环路设计:从理论到实践的Type II补偿器详解

在开关电源设计中,反馈环路稳定性是决定电源性能与可靠性的核心。其本质是通过补偿网络对功率级的小信号特性进行校正,以构建一个具有足够相位裕度和增益裕度的闭环系统。反激转换器作为一种广泛应用的隔离拓扑,其功率级在连续导通模式(CCM)和非连续导通模式(DCM)下呈现不同的零极点特性,这直接决定了补偿器的选型。Type II补偿器因其传递函数中固有的积分环节、低频零点与高频极点,恰好能与反激功率级的1P2Z(一个极点、两个零点)特性形成互补,有效塑造理想的回路增益曲线,实现快速稳定的动态响应。本文聚焦于采用TL4

weixin_30162121的博客 501

python数据处理 dataframe用正则去除全部空格、换行符

python中给dataframe使用str.replace(' ', '').str.replace('/s', '').str.replace('/n', '')格式都没有去除全部空格。这可能是由于字符串中不仅包含空格字符,还包括制表符或其他空白字符。可以尝试使用正则表达式。将所有空格符替换为空字符串。

weixin_43606023的博客 3558

SAP传输请求全流程详解:从SE10创建到STMS跨环境部署(附常见错误排查)

本文详细解析了SAP传输请求的全流程,从SE10创建到STMS跨环境部署,并提供了常见错误排查方法。涵盖工作台请求、定制请求等类型,以及STMS传输原理和实战操作技巧,帮助用户高效管理SAP系统变更。

weixin_29214335的博客 143

python dataframe是否为空_python-Pandas DataFrame-将NULL字符串替换为空白...

我正在处理具有许多不同类型列的大型数据集.数字值和带有一些NULL值的字符串混合在一起.我需要根据类型将NULL值更改为Blank或0.1 John 2 Doe 3 Mike 4 Orange 5 Stuff9 NULL NULL NULL 8 NULL NULL Lemon 12 NULL我希望它看起来像这样1 John ...

weixin_39875419的博客 515

【YOLOv8改进-损失函数】 YOLOv8自带损失函数CIoU / DIoU / GIoU 详解,以及如何切换损失函数

在介绍YOLOv8中的各种Iou之前,我们先来了解了解目标检测中的损失函数。目标检测模型通常包含两类损失函数:类别损失(分类)和位置损失(回归)。这两类损失函数用于检测模型的最后一部分,根据模型的输出(类别和位置)以及实际标注框(类别和位置),分别计算类别损失和位置损失。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 5190

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1229

面试题5:替换空格

字符串 在C++中,字符串以’\0’结尾,而在Java中没有以什么结尾的说法 C++把产量字符串放到单独的一个内存空间。。当几个指针赋值给相同的产量字符串时,它们实际上会指向相同的内存地址,下面举一个例子 int main(int argc, _TCHAR* argv[]) { char str1[] = "Hello World"; char str2[] = "Hello World"; char* str3 = "Hello World"; char* s

ywm_up 156

【DRAM存储器六十四】DDR5介绍--preamble、postamble、interamble、刷新、power down、MPSM

简述DDR5 reamble、postamble、interamble、刷新、power down、MPSM的功能定义

highman110的博客 337

剑指offer之面试题5:替换空格

1、题目 2、解题思路

叶强的博客 989

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

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: HERO: Hierarchical Encoder for Video+LanguageOmni-representation Pre-training(未完)
下一篇: 面试题6:从尾到头打印链表
learning112358
博客等级 码龄9年 35粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值