字符串
LeetCode刷题分类——字符串
阿清~
这个作者很懒,什么都没留下…
展开
-
《剑指offer》刷题系列——(六十八)把数组排成最小的数
题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”思路定义一个排序规则,数组根据这个规则排序之后能排成一个最小的数字。要确定排序规则,就要比较两个数字,也就是给出两个数字m和n,我们需要确定一个规则判断哪个应该排在前面。两个数字m和n可以拼接成mn和nm。如果mn<nm,那么我们应该打印mn,也就是m应该排在n前面,此原创 2020-07-26 14:25:22 · 212 阅读 · 0 评论 -
《剑指offer》刷题系列——(六十七)把数字翻译成字符串
题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”思路动态规划思想dp[i]表示s[0...i]字符串总共可以翻译的数量初始状态:dp[0] = 1d原创 2020-07-25 15:37:42 · 83 阅读 · 0 评论 -
《剑指offer》刷题系列——(六十六)把字符串转换成整数
题目写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注意:假如该字符串中的第一原创 2020-07-25 11:27:16 · 124 阅读 · 0 评论 -
《剑指offer》刷题系列——(六十)最长不含重复字符的子字符串
题目请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 :输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路动态规划的思想动态转移方程:dp[j]表示以第j个字符结尾的最长不含重复字符的子字符串i 表示距离第j个字符最近的相同字符的索引如果j-i > dp[j-1],说明s[i]在当前计算的最长子字符串范围之外,dp[j] = dp[j-1]+1 如果j-i <= dp[j-1],说原创 2020-07-21 11:53:41 · 107 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十六) 第一个只出现一次的字符
题目在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "思路利用哈希表统计各字符出现的数量,返回第一个出现一次的字符。python中可以用字典实现哈希表的结构。字典中的键是唯一的,每个键的键值保存该键是否出现一次,如果是设置为true,如果不是设置为false。然后遍历字典,找到第一个值为false的键返回。如果没有返回 ’ '。代码class Solution:原创 2020-07-14 22:57:50 · 144 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十一)矩阵中的路径
题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第原创 2020-07-13 14:45:57 · 161 阅读 · 0 评论 -
《剑指offer》刷题系列——(三十八)左旋转字符串
题目字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 :输入: s = “abcdefg”, k = 2输出: “cdefgab”代码方法一:切片class Solution: def reverseLeftWords(self, s: str, n: int) -> str: return s[n:]+s[原创 2020-07-12 13:29:32 · 107 阅读 · 0 评论 -
《剑指offer》刷题系列——(三十七)翻转单词顺序
题目输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括思路双指针法,两个指针而分别用来定位每个单词的首尾位置。因为需要翻转,所以从字符串的右边开始往左遍历。初始时,指针 i 和指针 j原创 2020-07-12 12:22:47 · 103 阅读 · 0 评论 -
《剑指offer》刷题系列——(四)替换空格
题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"。例如:输入:s = “We are happy.”输出:“We%20are%20happy.”思路将一个空格字符替换成%、2、0三个字符,字符串会变长。第一种解决方案是在原来的字符串上进行替换,这样有可能覆盖修改该字符串后面的内容;另一种解决方案是创建新的字符串,并在新的字符串上进行替换,那么我们可以自己分配足够多的内存。这里我们采用第一种。最直观的做法是从头到尾扫描字符串,遇到空格就替换成,把一个字符替换成三个字符,但是这样必须把原创 2020-06-01 20:03:35 · 141 阅读 · 0 评论