substr

php学习第二章:字符串处理函数(二)字符串查找、替换、截取等

两盒软妹~` 提交于 2020-03-31 21:45:04
1、字符串比较   (1)strcmp($str1,$str2) //比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的字符大于前面的字符)     1 /** 2 * strcmp($str1, $str2) 比较两个字符串是否相等 3 * @param string $str1 第一个字符串 4 * @param string $str2 第二个字符串 5 */ 6 $str1 = 'hell'; 7 $str2 = 'ello'; 8 var_dump(strcmp($str1, $str2)); //输出1,因为两个字符串的首字母不同,比较首字母,h的位置在e后面,所以h比e大   (2)strncmp($str1, $str2, $length); //比较两个字符串截取指定长度的子串 1 /** 2 * strncmp($str, $str2, $len) 比较两个字符串从开头到指定长度的子串 3 * @param string $str1 第一个字符串 4 * @param string $str2 第二个字符串 5 * @param int $len 要截取的开头 6 */ 7 $str3 = 'my pleasure!'; 8

leetcode 1316

自作多情 提交于 2020-03-29 10:11:05
题目解析:求回声字符串的个数,也就是求头半段等于后半段的字符串的个数。 解法一:遍历长度为l的每一子字符串,时间复杂度为O(n^2) , 判断子字符串的的前半段是否等于后半段,总的时间复杂度为O(N^3).会超时; class Solution { public: int distinctEchoSubstrings(string text) { int len = text.size() ; //vector<vector<int>> dp(len , vector<int>(len , 0)) ; //int modl = 1e18 + 7 ; unordered_set<string> res ; for(int split = 1 ; split < len ; split++) for(int l = 1 ; split - l >= 0 && split + l <= len ; l++) if(text.compare(split - l , l , text , split , l) == 0) res.insert(text.substr(split , l)) ; return res.size() ; } };    解法二:优化:使用kmp算法,求每一子字符串的kmp长度是否大于等于子字符串长度的一半,若等于一半就一定满足条件

19-字符串匹配(kmp || substr,find)

。_饼干妹妹 提交于 2020-03-29 02:57:33
链接: https://www.nowcoder.com/acm/contest/77/C 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 有一个字符串 让你找到这个字符串 S 里面的子串T 这个子串 T 必须满足即使这个串的前缀 也是这个 串的后缀 并且 在字符串中也出现过一次的(提示 要求满足前后缀的同时也要在字符串中出现一次 只是前后缀可不行 输出最长满足要求字符串) 输入描述: 给出一个字符串 长度 1 到 1e6 全部是小写字母 输出描述: 如果找的到就输出这个子串T 如果不行就输出 Just a legend 示例1 输入 fixprefixsuffix 输出 fix 示例2 输入 abcdabc 输出 Just a legend方法一:kmp:注意枚举的模式串,以及原串与给定字符之间的差别: #include <iostream> #include <cstring> #include <cstdio> using namespace std; string str, mo; int Next[1000005]; void getNext(){ Next[0] = -1; //一定要初始化 int i = 0, j = -1, len = mo

substr函数

让人想犯罪 __ 提交于 2020-03-27 04:26:08
string substr ( string $string , int $start [, int $length ] ) 参数 string 输入字符串。必须至少有一个字符。 start (正数,从左开始查,左一索引为0 , 负数从右开始查,又一索引为1) 如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “ abcdef ” 中,在位置 0 的字符是 “ a ”,位置 2 的字符串是 “ c ” 等等。 如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。 如果 string 的长度小于 start ,将返回 FALSE 。 Example #1 使用负数 start <?php $rest = substr("abcdef", -1); // 返回 "f" $rest = substr("abcdef", -2); // 返回 "ef" $rest = substr("abcdef", -3, 1); // 返回 "d" ?> length (正数,从start开始最多包含的字符串数, 负数,截取时从string末尾漏掉length个字符串 如: substr('abcdef',1,2):bcd) 如果提供了正数的 length ,返回的字符串将从 start

计算年龄的函数方法

孤人 提交于 2020-03-26 11:05:42
function GetAge(identityCard) { var len = (identityCard + "").length; if (len == 0) { return 0; } else { if ((len != 15) && (len != 18))//身份证号码只能为15位或18位其它不合法 { return 0; } } var strBirthday = ""; if (len == 18)//处理18位的身份证号码从号码中得到生日和性别代码 { strBirthday = identityCard.substr(6, 4) + "/" + identityCard.substr(10, 2) + "/" + identityCard.substr(12, 2); } if (len == 15) { strBirthday = "19" + identityCard.substr(6, 2) + "/" + identityCard.substr(8, 2) + "/" + identityCard.substr(10, 2); } //时间字符串里,必须是“/” var birthDate = new Date(strBirthday); var nowDateTime = new Date(); var age = nowDateTime

PHP 创建GUID唯一标识

时光总嘲笑我的痴心妄想 提交于 2020-03-24 18:20:51
function createGuid() { mt_srand((double)microtime()*10000); $charid = strtoupper(md5(uniqid(mt_srand(), true))); $hyphen = chr(45); $uuid = substr($charid, 0, 8) . $hyphen . substr($charid, 8, 4) . $hyphen . substr($charid,12, 4) . $hyphen . substr($charid,16, 4) . $hyphen . substr($charid,20,12); return $uuid; } echo createGuid(); // 8929E377-74F8-3DEC-4A86-2E5289A8327F 来源: https://www.cnblogs.com/52lnamp/p/12517293.html

JS截取字符串常用方法

我的未来我决定 提交于 2020-03-23 18:27:29
reference:http://www.jb51.net/article/42482.htm 使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组 函数:Join() 功能:使用您选择的分隔符将一个数组合并为一个字符串 例子: var delimitedString=myArray.join(delimiter); var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”); var portableList=myList.join(”|”); //结果是jpg|bmp|gif|ico|png 函数:substring() 功能:字符串截取,substring 方法用于提取字符串中介于两个指定下标之间的字符。 语法 :stringObject.substring(start,stop) 参数 描述 start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop 可选。一个非负的整数,比要提取的子串的最后一个字符在

L1-064 估值一亿的AI核心代码

旧街凉风 提交于 2020-03-22 12:53:39
PTA原题链接 题目描述 (图略) 以上图片来自新浪微博。 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来; 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉; 把原文中所有大写英文字母变成小写,除了 I; 把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词; 把原文中所有独立的 I 和 me 换成 you; 把原文中所有的问号 ? 换成惊叹号 !; 在一行中输出替换后的句子作为 AI 的回答。 输入格式: 输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。 输出格式: 按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。 输入样例: 6 Hello ? Good to chat with you can you speak Chinese? Really? Could you show me 5 What Is this prime? I,don 't know 输出样例: Hello ? AI: hello!

Oracle两个分页存储过程的比较

吃可爱长大的小学妹 提交于 2020-03-22 03:06:12
由于公司项目上的问题,在数据量很大的时候,在SELECT 语句中包含了很多 function 致使查询进行了全表扫描,例如查询语句:select function1(col1) as a1,function2(col2) as a2,function3(col3) as a3,...... from table1 t1 where col5 = function(col5) 像这种SQL语句查询的过程中会变得巨慢,因为在function中又去其他表(比如字典表)中做了查询,一个只有10W记录的表,查询一个类似的SQL语句需要25~30秒的样子,原来的分页存储过程: 1 create or replace package body PK_Pager 2 as 3 procedure GetPager 4 ( 5 p_PageSize int , -- 每页记录数 6 p_PageNo int , -- 当前页码,从 1 开始 7 p_SqlSelect varchar2 , -- 查询语句,含排序部分 8 p_OutRecordCount out int , -- 返回总记录数 9 p_OutCursor out mytype 10 ) 11 as 12 v_sql varchar2 ( 3000 ); 13 v_count int ; 14 v_heiRownum int ; 15

CF1326 D2. Prefix-Suffix Palindrome (Hard version) (manacher)

偶尔善良 提交于 2020-03-20 13:56:56
题目链接 https://codeforces.com/contest/1326/problem/D2 题意 给你一个字符串 \(S\) ,找出最长的满足以下条件的字符串 \(T\) : 长度不超过 \(S\) \(T\) 为回文字符串 存在两个字符串 \(a\) 和 \(b\) (可能为空), \(T=a+b\) ( \(a\) 为 \(S\) 的前缀, \(b\) 为 \(S\) 的后缀) 思路 假设 \(a\) , \(b\) 有一个为空时,我们直接对整个 \(S\) 跑一遍 \(manacher\) ,求出最长回文前缀和最长回文后缀,两者取最大。 假设 \(a\) , \(b\) 不为空,我们先对 \(S\) 进行首尾匹配,当匹配到不相同时,就截取剩下中间的那段字符串 \(c\) ,跟上面一样,对 \(c\) 跑一遍 \(manacher\) ,求出最长回文前缀和最长回文后缀并两者取最大,然后合并起来就是结果了。 最后输出求出来的这两个字符串的长度最大的一个就好了 #include<bits/stdc++.h> using namespace std; const int maxx = 3e6+10; char tmp[maxx]; int len[maxx]; int s1,s2; void Manacher(string s) { tmp[0]='$'; tmp[1]=