字符串
Jaster_wisdom
程序员
展开
-
字符串的旋转
这种题目的描述一般是这样的:将一字符串的前几个字符移到这个字符串后面去。常规的思路是,写一个将首字符移到末尾的函数,然后调用n次即可。但比较快捷的方法是,三步反转。所谓三步反转,即将一个字符串分割成几个部分,每个部分分别反转,然后对整个字符串进行整体反转。例子:单词翻转输入一个英文句子,翻转句子中单词的顺序。要求单词内的字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符原创 2016-07-26 20:51:52 · 417 阅读 · 0 评论 -
LeetCode151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例: 输入: "the sky is blue",输出: "blue is sky the".说明:无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。题目分析:首先将原字符串逆转,然后挨个逆转连续的子串,特别要注...原创 2018-08-04 14:35:58 · 1574 阅读 · 0 评论 -
LeetCode459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "...原创 2018-07-23 17:19:26 · 467 阅读 · 0 评论 -
Leetcode28. 实现strStr()
题目大意:实现字符串匹配函数,即在文本串S中查找一个模式串P的出现位置,若不出现返回-1题目分析:暴力解法,将模式串P与文本串S一位一位的比较,若相同,则继续比较下一位;若不同,则将模式串P向后移动一位,继续往后比较。时间复杂度为O(m*n),假设文本串S的长度为m,模式串P的长度为n。代码展示:class Solution(object): def strStr(self, haysta...原创 2018-06-10 10:34:52 · 494 阅读 · 0 评论 -
Leetcode20. 有效的括号
题目大意:判断给定的字符串是否有效,即左右括号必须按序匹配。题目分析:本题可以用栈来实现,每次遇到'(' 或 '[' 或 '{',就将其入栈; 遇到其他情况,就弹出栈顶的元素,并分析栈顶元素和当前元素是否可以匹配,若可以匹配,就继续循环,否则就输出无效。当循环结束时,若栈中还有元素,表明有多余的括号,输出无效。代码展示:class Solution: def isValid(self, s...原创 2018-06-03 15:48:21 · 154 阅读 · 0 评论 -
leetcode14. 最长公共前缀
题目大意:求一组字符串的最长公共前缀,就是它们这几个字符串共有的一些前缀题目分析:本题我也没什么好方法,就是按个遍历,看每个字符串的第一个字符是不是都存在,然后看是不是相等。若相等,则再判断第二个字符,是不是都存在,都相等。一旦出现某个字符串的某位字符不存在或者与之前的不一样,则循环结束,返回当前的共有前缀。当一组字符串为空时,直接返回空串。代码展示:class Solution {public...原创 2018-04-16 22:32:23 · 318 阅读 · 0 评论 -
leetcode5. 最长回文子串
题目大意:求出一个字符串中的最长回文子串。回文子串的意思是前后对称,也就是类似aba,abba,bb等题目分析:可以通过枚举所有的子串,然后判断该串是不是回文的,这样的方法明显是O(n^3),其中枚举子串花费O(n^2),判断回文又要花掉O(n)的时间。下面通过简单的处理使其降到O(n^2)的时间复杂度。用longsubstr[i]表示以第i个字符结尾的最长的回文子串,我们从开头开始遍历,一旦发现...原创 2018-04-10 21:44:39 · 212 阅读 · 0 评论 -
九度OJ 1111 单词替换
题目描述:输入一个字符串,以回车结束(字符串长度输入:多组数据。每组数据输入包括3行,第1行是包含多个单词的字符串 s,第2行是待替换的单词a,(长度第3行是a将被替换的单词b。(长度s, a, b 最前面和最后面都没有空格.输出:每个测试数据输出只有 1 行,将s中所有单词a替换成b之后的字符串。原创 2016-08-08 15:24:23 · 1068 阅读 · 0 评论 -
九度OJ 1099 后缀子串排序
题目描述:对于一个字符串,将其后缀子串进行排序,例如grain其子串有:grain rain ain in n然后对各子串按字典顺序排序,即: ain,grain,in,n,rain输入:每个案例为一行字符串。输出:将子串排序输出样例输入:grain样例输出:aingrainin原创 2016-08-06 15:27:25 · 600 阅读 · 0 评论 -
华为OJ 字符串排序
描述编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。 如,输入:Type 输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入:BabA 输出:aABb规则3:非英文字母的其它字符保持原来的位置。 如,输入:By?e 输出:Be?y样例: 输入: A Famous Saying:原创 2016-07-31 22:57:53 · 1086 阅读 · 0 评论 -
字符串的全排列
问题描述:给定一个字符串"abc",输出由字符'a','b','c'所能排列出来的所有字符串abc,acb,bac,bca,cab,cba解法一 递归实现依次将a,b,c固定在第一位,然后求后面两个数的排列#include #include #include using namespace std;void CalcAllPermutation(char原创 2016-07-28 22:00:52 · 574 阅读 · 0 评论 -
字符串包含
问题描述:给定长字符串a和一短字符串b,如何判断出短字符串b中的所有字符是否都在长字符串a中?说明,重复的字母算同一个解法一 蛮力轮询对于字符串b中的每一个字母,依次逐个与字符串a中的每个字符进行比较,看是否都在字符串a中。若两个字符串的长度为n,m,则该解法的时间复杂度为O(m*n)#include using namespace std;bool String原创 2016-07-27 18:39:43 · 460 阅读 · 0 评论 -
LeetCode179. 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。题目分析:首先,将vector内的数都转换成string类型,便于后面的比较大小和输出。然后,定义cmp比较函数,假设有数字m,数字n...原创 2018-08-02 16:46:15 · 627 阅读 · 0 评论