知识梳理----字符串
hy3686_1991
这个作者很懒,什么都没留下…
展开
-
字符串处理------包含
知识梳理—-字符串 二. 字符串包含 题目描述: (此题是我2016年4月15腾讯实习生一面时的一道面试题) 给定两个字符串str1和str2,请尽可能快的判断str2中的字符是否全都在str1中出现. 实现的方法还是有蛮力轮询和带技巧的方法之分: 蛮力轮询: 对于str2中的每个字符串,都逐个与str1中的字符进行比较,查看是否包含在str1中.(时间复杂度O(mn))原创 2016-04-25 16:07:26 · 365 阅读 · 0 评论 -
字符串------表示数值的字符串
题目描述: 实现一个函数用来判断字符串是否表示数值(包括整数和小数以及使用科学计数法表示的数)。 分析: 表示数值的字符串的规则有: 第一个字符只能是’+’ 、’-‘以及数字; 数字字符后面只能接’.’或’e’/’E’; 小数点后面必须要有字符且只能接数字字符或’e’/’E’; ‘e’/’E’后面必须要接字符且只能接数字字符或者’+’ / ‘-‘; ‘+’ / ‘-’ 后面必须要接数字字符;原创 2016-08-08 10:50:50 · 401 阅读 · 0 评论 -
字符串------正则表达式匹配
题目描述: 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 分析: 难点主要是一个匹配成功的字符后面紧接着出现’*’应该如何处理. 可以分三种情况: 文本串不移动, 匹配串移动两个字符; 文本串移动一个字符, 匹配串不移动; 文本串移动一个字符, 匹配串移动两个字符; bool match(char原创 2016-08-08 10:25:58 · 283 阅读 · 0 评论 -
字符串处理------最长回文子串
题目描述: 给定一个字符串,求它的最长回文子串的长度. 方法一:中心扩展法. 由于回文串中,以某个字符为中心的前缀和后缀一定是相同字符。可以利用此方法枚举中心位置,然后进行扩展,从而找到最长回文子串。 #include #include using namepace std; int longestPalindrome(string &str, int len); int beg原创 2016-06-20 15:37:15 · 245 阅读 · 0 评论 -
字符串------打印1到最大的n位数
题目描述: 输入位数n,要求打印出从1到最大的n位数。举例来说,若输入3,则打印1到 999 . 思路: 首先,不能简单的使用int 或者 long 等类型来完成此题,因为要考虑大数问题,所以需要使用字符串来模拟。方法是使用一个长为 n+1 的数组number[n+1]来实现,初始时把前n位的值置为 ‘0’ ,最后一位为 ‘\0’ ,然后每次取出第 n-1 位的字符(从0开始),将其转换为整数原创 2016-05-21 15:01:52 · 287 阅读 · 0 评论 -
字符串------子串匹配
题目描述: 设有文本串S和模式串P,现在要P是否为S的一个子串,若是,则返回P在S中开始的位置,若不是,返回-1. 分析: 一般来说,我们可以使用朴素匹配的方法,逐个匹配。假设文本串长为n,模式串长为m,则朴素匹配的时间复杂度为O((n-m+1)*m). //朴素匹配 int Search(char *S, char *P) {原创 2016-06-15 22:11:28 · 760 阅读 · 0 评论 -
字符串处理------字符串转整数
四. 字符串转为整数 题目描述: 输入数字字符,输出数字(写一个自己的atoi). 关键: 一个字符减去’0’就转化为整型.使用一个循环把字符串中的内个字符都转换为整型再放到相应的位上,就可以解决问题.//原始版本 #include <iostream> #include <stdio.h> using namespace std;static const int LEN =原创 2016-05-03 17:13:32 · 531 阅读 · 0 评论 -
字符串处理------旋转
知识梳理—-字符串 一.字符串的旋转 字符串的旋转在形式上如同将一个字符串像位操作那样进行循环左移或者右移。常见的方法是使用暴力进行,即每次记录最左边的字符S并将其余字符向左移动一位,然后将S放在最右边的位置。将此过程循环进行N次,即可实现字符串前N为的旋转。 暴力法代码: (时间复杂度O(mn), 空间复杂度O(1))#include <iostream> #in原创 2016-04-23 17:29:49 · 325 阅读 · 0 评论 -
字符串处理------回文判断
题目描述: 1.给定一个字符串,判断其是否为回文串. 2.判断一个单链表是否回文.对于字符串,可以从两头想中间扫描,在扫描过程中如果头和尾的字符始终相同,则该字符串是回文串.#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std;bool isPalind原创 2016-05-04 11:48:01 · 349 阅读 · 1 评论 -
字符串处理------全排列
题目描述为: 输入一个字符串,请输出这个字符串的所有排列. 思路: 可以使用递归的方法,每次选定一个字符固定在首位,然后让其它的字符做全排列.#include <iostream> #include <string>void funcCalcAll(string &str, int from, int to);int main() { string str; cout <原创 2016-05-03 17:24:55 · 336 阅读 · 0 评论 -
字符串处理------最长回文子串
题目描述: 给定一个字符串,求它的最长回文子串的长度.方法一:中心扩展法. 由于回文串中,以某个字符为中心的前缀和后缀一定是相同字符。可以利用此方法枚举中心位置,然后进行扩展,从而找到最长回文子串。#include <iostream> #include <string> using namepace std;int longestPalindrome(string &str, int len)原创 2016-05-11 11:15:08 · 300 阅读 · 0 评论 -
字符串------字符流中第一个不重复的字符
题目描述: 实现一个函数用来找出字符流中第一个只出现一次的字符。 分析: 使用ASCII字符集只有256个字符,可以定义一个长度为256的数组,使得数组下标对应的的记录字符出现的位置,初始时数组的每个元素都初始化为-1. 每遇到一个字符,先判断在数组中的对应位置上的值是否为-1,若是,则表示当前遇到的字符是第一次出现,就将对应位置改为1;若数组的对应位置不是-1,则表示当前遇到的字符已经出现过原创 2016-08-08 11:17:47 · 522 阅读 · 0 评论