字符串函数

LeetCode刷题笔记——#8. 字符串转换整数

☆樱花仙子☆ 提交于 2020-02-28 07:15:35
难度:中等 一、题目描述: 二、解题分析: ###### leetcode 代码主体 ###### class Solution : def myAtoi ( self , str : str ) - > int : INT_MAX = 2147483647 INT_MIN = - 2147483648 str = str . lstrip ( ) #清除左边多余的空格 num_re = re . compile ( '^[\+\-]?\d+' ) #设置正则规则 num = num_re . findall ( str ) #查找匹配的内容 num = int ( * num ) #由于返回的是个列表,解包并且转换成整数 return max ( min ( num , INT_MAX ) , INT_MIN ) #返回值 ############################### ##### 模拟笔试 要写 输入、输出 #### #输入: str = input ( ) #键盘输入,输入为字符 # 输出: output = Solution ( ) print ( output . myAtoi ( str ) )   正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。   Python 自1.5版本起增加了re 模块,它提供 Perl

对象的新增方法

巧了我就是萌 提交于 2020-02-28 07:10:09
本文为学习笔记; 原文链接 <<<<转载请注明原文出处! Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符( == )和严格相等运算符( === )。它们都有缺点,前者会自动转换数据类型,后者的 NaN 不等于自身,以及 +0 等于 -0 。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。 Object.is 就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符( === )的行为基本一致。 Object.is('foo', 'foo') // true Object.is({}, {}) // false 不同之处只有两个:一是 +0 不等于 -0 ,二是 NaN 等于自身。 +0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true ES5 可以通过下面的代码,部署 Object.is 。 Object.defineProperty(Object, 'is', { value: function(x, y) { if (x === y) { // 针对+0 不等于 -0的情况

如何摆脱GCC中从字符串常量到&apos;char *&apos;&apos;警告的弃用转换?

假如想象 提交于 2020-02-28 06:53:03
所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告: 警告:不推荐将字符串常量转换为'char *' 显然,解决这个问题的正确方法是找到每个声明 char *s = "constant string"; 或函数调用如: void foo(char *s); foo("constant string"); 并使它们成为 const char 指针。 但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务。 现在的问题是我正在运行 -werror ,所以我需要一些方法来扼杀这些警告。 我怎样才能做到这一点? #1楼 PyTypeObject PyDict_Type= { ... PyTypeObject PyDict_Type= { PyObject_HEAD_INIT(&PyType_Type), "dict", dict_print, 0, 0 }; 观看名称字段,在gcc中编译时没有警告,但在g ++中它会,我不知道为什么。 在 gcc (Compiling C) ,-Wno-write-strings默认是活动的。 in g++ (Compiling C++) Wwrite-strings默认是活动的 这就是为什么会有不同的行为。 对于我们来说,使用 Boost_python 宏 Boost_python 产生这样的警告。

C语言string字符串函数memset()、memchr()、memcpy()\strcat()、strncat()、strchr()

旧巷老猫 提交于 2020-02-28 05:29:55
1.memchr() 原型:void memchr(const void str, int c, size_t n) 作用:在 str的前n个字节中寻找c 返回值:一个指向匹配字节的指针 否则空指针(第一个匹配的值的指针) 2.strchr() 原型:char strchr(const char*s,int c) 返回值:匹配字节的指针 区别:memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,不能用strchr去查找的,因为遇到0x0会当作字符串的结束符停止。而mem是根据后面的n停止。 # include <stdio.h> # include <string.h> int main ( ) { char * p1 , * p2 ; char ch [ ] = { "Nthing is impossible,Believe yourself!" } ; p1 = ( char * ) memchr ( ch , 'i' , strlen ( ch ) ) ; p2 = strchr ( ch , 'i' ) ; printf ( "Memchr()搜索i:%s\n strhr()搜索i:%s" , p1 , p2 ) ; return 0 ; } 运行结果: Memchr()搜索i:ing is impossible,Believe

Java学习-常用函数接口(三)

一曲冷凌霜 提交于 2020-02-28 04:19:30
常用的函数式接口_Predicate接口 import java . util . function . Predicate ; /* java.util.function.Predicate<T>接口 作用:对某种数据类型的数据进行判断,结果返回一个boolean值 Predicate接口中包含一个抽象方法: boolean test(T t):用来对指定数据类型数据进行判断的方法 结果: 符合条件,返回true 不符合条件,返回false */ public class Demo01Predicate { /* 定义一个方法 参数传递一个String类型的字符串 传递一个Predicate接口,泛型使用String 使用Predicate中的方法test对字符串进行判断,并把判断的结果返回 */ public static boolean checkString ( String s , Predicate < String > pre ) { return pre . test ( s ) ; } public static void main ( String [ ] args ) { //定义一个字符串 String s = "abcdef" ; //调用checkString方法对字符串进行校验,参数传递字符串和Lambda表达式 /*boolean b =

面试题05:替换空格

限于喜欢 提交于 2020-02-28 01:04:57
题目描述 请实现一个函数,把字符串中的每个空格替换成“%20”。例如,当字符串为 “We Are Happy.”,则经过替换之后的字符串为 “We%20Are%20Happy.”。 思路 可以通过将字符串长度变长的方式去替换,即把空格占用的空间从 1 个字符变成 3 个字符。 如果有一个空格,那么就要把空格替换成 %20,替换后占用 3 个字符,而空格占 1 个字符,也就是说,字符串的长度加 2 了。 首先要先确定字符串中空格的个数,以此来确定新字符串的长度应该是多少。 经过简单计算,可得到 新字符串的长度 = 原长度 +(2 * 空格个数)。 然后定义两个指针 p1, p2 去分别指向原字符串的结尾位置以及新字符串的结尾位置。 如果 p1 指向的字符不是空格,那么将 p1 指向的字符赋值到 p2 所指向的位置,之后 p1,p2 分别向前移动一位。 如果 p2 指向的字符是空格,那么将 p2 的位置向前移动 3 个位置,并且在移动的过程中,分别赋值为 0,2,%。移动完毕后,p1 向前移动一位。 只要 p1 >= 0 并且 p1 与 p2 位置没有重合,那么就一直判断下去,直至把原字符串过一遍。 代码 public class Solution { public String replaceSpace(StringBuffer str) { if (str == null ||

JavaScript 数据类型和类型转换

删除回忆录丶 提交于 2020-02-28 01:03:37
JavaScript 中有 6 种不同的数据类型: string(字符串) number(数字) boolean(布尔) object(对象) function(函数) symbol(ES6的数据类型之一) 有 3 种对象类型: Object(对象) Date(日期) Array(数组) 有 2 个不包含任何值的数据类型: null undefined 需要注意几个: NaN 的数据类型是 number 数组(Array)的数据类型是 object 日期(Date)的数据类型为 object null 的数据类型是 object 未定义变量的数据类型为 undefined constructor 属性 constructor 属性返回所有 JavaScript 变量的构造函数。 可以使用 constructor 属性来查看对象是否为数组 : 可以使用 constructor 属性来查看对象是否为日期 JS 类型转换 将数字转换为字符串 全局方法 String() 可以将数字转换为字符串。 此方法可用于任何类型的数字,字母,变量,表达式: Number 方法 toString() 也可以完成转换。 将布尔值转换为字符串 全局方法 String() 可以将布尔值转换为字符串。 Boolean 方法 toString() 也可以完成转换。 将日期转换为字符串 Date() 返回的是字符串

Python IO

烈酒焚心 提交于 2020-02-28 00:45:37
I/O 在计算机中I/O是 Input/Output 的简写,表示输入和输出。由于程序和运行时的数据是在内存中驻留,并由CPU计算核心来执行,涉及到数据交换的地方比如磁盘、网络等时,就需要I/O接口。 通常程序完成I/O操作会有 Input 和 Output 两个数据流,当然也有只用一个的情况,比如从磁盘读取文件到内存,就只会使用 Input 操作。相反将数据从内存写入到磁盘文件时也只有一个 Output 操作。 输入输出是相对的,需要考虑具体的对象是什么。一般而言,当编写的程序需要读取磁盘文件时,相当于将磁盘的数据输入到程序中,对于程序而言读取的数据就属于 Input ,对于磁盘而言则相当于将数据输出给程序,输出的数据是属于 Output 。 Stream I/O编程中,流 Stream 是一个很重要的概念,可以把流想象成一根管道,数据就是水管中的水,但只能单向流动。 Input Stream 输入流是数据从外部比如磁盘或网络流进内存, Output Stream 输出流则是数据从内存 流到外部。例如,对于浏览网页来说,浏览器和服务器之间至少需要建立了两条水管才能收发数据。 同步异步 由于CPU和内存的速度远高于外设的速度,所以I/O编程中存在速度验证不匹配的问题 。 比如说要将100MB的数据写入磁盘,CPU输出100MB数据只需0.01秒

leetcode 14 --最长公共前缀

别等时光非礼了梦想. 提交于 2020-02-27 23:56:04
题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 思路:1.首先判断字符串数组是否为空,若为空,返回; 2.判断字符串数组中是否有空,若有返回; 3.将字符串数组中第一个字符串中的每个字符与剩下的字符串相应的位置的字符比较,如果都相同则加到result中,否则直接退出返回result。 class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.size() == 0) return ""; for(int i = 0;i<strs.size();i++) { if(strs[i].size() == 0) return ""; } string result; for(int i = 0;i< strs[0].size();i++) { for(int j = 0;j<strs.size();j++) { if(strs[0][i] != strs[j][i] ) return

Python 数据类型

倖福魔咒の 提交于 2020-02-27 19:48:15
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 等号(=)用来给变量赋值。 https://www.runoob.com/python3/python3-data-type.html 讲数据类 型的开篇第一行,个人觉得需要好好琢磨和理解。我个人的理解是Python的变量就类似于 C 的 指针类型,指针本无类型,只是一个存放内存地址的空间,而Python的变量仅仅就是一个变量, 我把它看成是 name = &data 。只是具体怎样使用指针(指针指向的内存地址的内容),由实际 访问者决定;而Python的变量指向的类型,则由指向的内存标识,通过Python内部应该是标识 了这部分内存的类型,这算是面向对象和面向过程的区别吧,面向对象由对象本身提供操作方 法,面向过程则由使用者自己实现方法-扯得有点远了。 python 基本数据类型: 1. 数字类型 2. 字符串类型 3. 列表 4. 元组 5. 集合 6. 字典 其中 不可变类型(只读): 数字类型,字符串类型,元组类型 可变类型(可读写): 列表类型,集合类型,字典类型 只读意思是变量指向的位置只读,而不是变量本身只读 通过id(变量名) 可以看到变量的地址 数字类型的使用与常用操作