str函数

【剑指offer】5、替换空格

蹲街弑〆低调 提交于 2020-03-25 19:55:38
题目 请实现一个函数,把字符串中的每个空格替换成"%20"。例如,We are happy. -> We%20are%20happy. 思路 如果直接从头扫描字符串,碰到空格插入 %20,并将后面的所有字符往后挪,对于O(n)空格的字符串,每次移动O(n)个字符,时间复杂度是O(n 2 )。 因此,我们先扫描一次,统计出空格的个数,直接计算出替换之后的字符串长度,两个指针分为指向原字符串和替换后字符串的末尾。   (1)没碰到空格,复制,向头前进   (2)碰到空格,p1向前近1步,p2复制%20,并前进3步。 直到两个指针相遇。 void replaceSpace(char *str,int length) {   if (str == nullptr || length <= 0 )     return;   int num_blank = 0, ogLength = 0;  int i = 0;   while( str[i] != '\0'){     ogLength++;     if (str[i] == ' ')       num_blank++;     i++;   }   int newLength = ogLength + 2 * num_blank;   if (newLength > length)     return; //

剑指Offer——替换空格

橙三吉。 提交于 2020-03-25 19:37:47
题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析: 如果从前往后替换空格,那么每遇到一个空格就需要将还没遍历到的字符后移,总的移动步数将会很多。 所以我们考虑先求出替换空格之后的字符串的长度,再从后往前遍历进行替换,将会大大减少替换的次数,也不会覆盖还没遍历的字符。 代码: 1 class Solution { 2 public: 3 void replaceSpace(char *str, int length) { 4 int oldLength = strlen(str); // 没替换前的字符串长度 5 int newLength = oldLength; 6 for(int i = 0; i < oldLength; i++) { // 求出替换空格后的字符串长度 7 if(str[i] == ' ') 8 newLength += 2; 9 } 10 if(newLength > length) return; // 新长度超过限制的最长长度,则无法替换 11 while(oldLength >= 0 && newLength > oldLength) { // 从后往前替换空格 12 if(str[oldLength] == ' ') { 13

js去除前后空格

梦想与她 提交于 2020-03-25 19:35:55
<script language="javascript">    String.prototype.trim=function(){    return this.replace(/(^\s*)|(\s*$)/g, "");    }    String.prototype.ltrim=function(){    return this.replace(/(^\s*)/g,"");    }    String.prototype.rtrim=function(){    return this.replace(/(\s*$)/g,"");    }   </script>   写成函数可以这样:(trim(str))   <script type="text/javascript">    function trim(str){ //删除左右两端的空格    return str.replace(/(^\s*)|(\s*$)/g, "");    }    function ltrim(str){ //删除左边的空格    return str.replace(/(^\s*)/g,"");    }    function rtrim(str){ //删除右边的空格    return str.replace(/(\s*$)/g,"");    }   </script>

[剑指Offer]5-替换空格

拥有回忆 提交于 2020-03-25 19:34:33
链接 https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e?tpId=13&tqId=11210&tPage=3&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题意 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路 可以覆盖原字符串或者新开一个字符串,具体应询问面试官。 这里用覆盖原字符串(假设原字符指针开辟的空间足够大)。 从后往前更改数组,维护两个指针从尾部复制字符。比较从前往后,时间复杂度由O(n^2)降到O(n); 代码 class Solution { public: void replaceSpace(char *str,int length) { if(!str||length<strlen(str)){ return; } int pPre=(int)strlen(str); int pNew=pPre; for(int i=0;i<strlen(str);++i){ if(str[i]==' '){ pNew+=2; } } if(length<pNew){

剑指Offer-替换空格

梦想的初衷 提交于 2020-03-25 19:28:02
题目 :请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。 在原来的字符串上替换,并保证输入的字符串后面有足够的空余内存。 思路 : 解法一:最容易想到的就是 当遇到空格时,将后面的字符向后面移动2位 。此方法的时间复杂度为O(N^2)。 解法二:   首先遍历字符串, 统计字符串中的空格数目 ,计算新的字符长度 newLen = oldLen + 2 * 空格数;   依次 从字符串后面开始复制 ,分别用p1,p2指向旧新字符串的末尾,当遇到空格时,依次赋值‘0’,‘2’,‘%’;当p1 == p2时,过程终止(p1,p2之前的都是相同的,不用再复制)。此方法时间复杂度为O(N)。 code : 1 //len 为字符数组str的总容量 2 void ReplaceBlank(char *str, int len) 3 { 4 if (str == NULL || len <= 0) 5 { 6 return ; 7 } 8 //oldLen为字符串str的实际长度 9 int oldLen = 0; 10 int NumberOfBlank = 0; 11 int i = 0; 12 while (str[i] != '\0') 13 { 14 ++oldLen; 15 if (str[i

JS去除字符串左右两端的空格(转载)

痞子三分冷 提交于 2020-03-25 19:27:46
来源:https://www.cnblogs.com/fanyf/p/3785387.html var str=' 测试 '; 一、函数   <script type="text/javascript">    function trim(str){ //删除左右两端的空格    return str.replace(/(^\s*)|(\s*$)/g, "");    }    function ltrim(str){ //删除左边的空格    return str.replace(/(^\s*)/g,"");    }    function rtrim(str){ //删除右边的空格    return str.replace(/(\s*$)/g,"");    } 函数调用 trim(str) 二、js对象的方法 String.prototype.trim=function(){    return this.replace(/(^\s*)|(\s*$)/g, "");    }    String.prototype.ltrim=function(){    return this.replace(/(^\s*)/g,"");    }    String.prototype.rtrim=function(){    return this.replace(/(\s*$)

js去空格

余生颓废 提交于 2020-03-25 19:27:04
js去空格 去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim、ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写。下面的实现方法是用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去。 测试可行的: 去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.replace(/^\s+|\s+$/g,"");  写成函数可以这样:(trim(str))   <script type="text/javascript">    function trim(str){ //删除左右两端的空格    return str.replace(/(^\s*)|(\s*$)/g, "");    }   function ltrim(str){ //删除左边的空格    return str.replace(/(^\s*)/g,"");    }    function rtrim(str){ //删除右边的空格    return str.replace(/(\s*$)/g,"");    }   </script>  写成类的方法格式如下:(str.trim();)   <script language="javascript">    String.prototype

ES6 字符串扩展+正则扩展+数值扩展

会有一股神秘感。 提交于 2020-03-25 17:10:32
模版字符串 ``反引号表示 var cyy={ name:"cyy", age:18, say:function(){ console.log('我叫'+this.name+',我今年'+this.age+'岁'); }, say2:function(){ console.log(`我叫`+this.name+`,我今年`+this.age+`岁`);//模板字符串可以替代单引号或者双引号 }, say3:function(){ console.log(`我叫${ this.name },我今年${ this.age }岁`);//可以用${}替代字符串拼接 }, say4:function(){ console.log(`我叫${ `Miss ${this.name}` },我今年${ this.age }岁`);//${}可以嵌套 }, say5:function(){ console.log(`我叫${ `Miss ${this.name.toUpperCase()}` },我今年${ this.age }岁`);//${}可以使用字符串方法 } } cyy.say(); cyy.say2(); cyy.say3(); cyy.say4(); cyy.say5(); 普通方式渲染数据 //模拟ajax获取到数据 function getList(){ //ajax

C#文件安全管理解析

和自甴很熟 提交于 2020-03-25 15:07:41
在实际的项目开发中,我们经常需要使用到文件的I/O操作,主要包含对文件的增改删查等操作,这些基本的操作我们都是很熟悉,但是较少的人去考虑文件的安全和操作的管理等方面,例如文件的访问权限管理,文件数据的彻底删除和数据的恢复等等,这一系列的操作需要我们对.NET的相关知识有一个深刻的学习。 在本文章主要介绍文件和目录的一些基本操作,以及文件目录的权限和安全设置的相关内容。 一.DotNet文件目录常用操作: 提到文件的I/O操作,这个对于每一个开发者来说都不是陌生的事,因为这些操作是我们在项目开发过程中经常使用到的一些操作。那么在.NET中操作文件的类在System.IO命名空间下,一下介绍一下常见的I/O操作类: DiveInfo:提供了对逻辑磁盘的基本信息访问的途径。(只能查看信息,不能做任何修改。) System.Environment:用来枚举驱动器。(不能获取驱动器的属性) System.Management:.NET针对WMI调用。 Directory和DircetoryInfo:用于操作目录。(前者为静态类,后者则须在实例化后调用,功能上相同) File和FileInfo:用于操作文件。(前者为静态类,后者须实例化后调用,功能上相同) 以上介绍了一些文件的基本操作类,本次主要讲解目录和文件操作,一下给出文件和目录操作的一些基本方法: 1.文件常规操作: (1)

python常用模块

扶醉桌前 提交于 2020-03-25 05:49:58
re模块 collections 模块 time 模块 random 模块 os 模块 sys 模块 序列化模块 一、re模块 re的方法: match()决定 RE 是否在字符串刚开始的位置匹配 search()扫描字符串,找到这个 RE 匹配的位置 findall()找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer()找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 split()将字符串在 RE 匹配的地方分片并生成一个列表, sub()找到 RE 匹配的所有子串,并将其用一个不同的字符串替换 subn()与 sub() 相同,但返回新的字符串和替换次数 先看一道例题: 我们平时登录注册要输电话号码,输入不符合电话号码规则,就会提示你输入错误。那么怎么判断电话号码是否符合输入条件呢?我们一般都会这样写。 while True: phone_number=input("please input your phone nunber:") if len(phone_number) ==11 and phone_number.isdigit() \ and (phone_number.startswith("13") or phone_number.startswith("17") or phone_number.startswith("17") or