字符串
CodersCoder
有人见星辰,有人见尘埃。
展开
-
算法--验证回文串
描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 示例 2: 输入: “race a car” 输出: false 分析 使用双指针。初始时,左右指针分别指向字符串的两侧,随后我们不断地将这两个指针相向移动,每次移动一步,并判断这两个指针指向的字符是否相同。当这两个指针相遇时,就说明是回文串。 实现 class原创 2020-09-10 19:04:07 · 154 阅读 · 0 评论 -
算法--二进制求和
描述 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” 提示: 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 “0” ,就都不含前导零。 分析 最简单的做法:先将 aa 和 bb 转化成十进原创 2020-08-30 16:02:24 · 371 阅读 · 0 评论 -
算法--电话号码的字母组合
描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 分析 以示例入手分析: 实现 private String letterMap[] = { " ", //0 "", //1 "ab原创 2020-08-28 18:57:38 · 186 阅读 · 0 评论 -
算法--最后一个单词的长度
描述 给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 示例 示例: 输入: “Hello World” 输出: 5 分析 就是简单的字符串遍历 步骤: 1.使用trim()去掉字符串左右两边的空格 2.将字符串从右往左遍历,遇到第一个空格,就能定位到最后一个单词。 实现 public int len原创 2020-08-26 18:42:26 · 126 阅读 · 0 评论 -
算法--整数反转
描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 分析 用图来表示: 按照思路进行编码即可。 实现 public int reverse(int x) { in原创 2020-08-24 21:35:07 · 219 阅读 · 0 评论 -
算法--外观数列
描述 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 说明: 第一项是数字 1 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21 描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211原创 2020-08-21 20:41:40 · 149 阅读 · 0 评论 -
算法--正则表达式匹配
描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 示例 1: 输入: s = “aa” p = “a” 输出: false 解释: “a” 无法匹配 “aa” 整个字符串。 示例 2: 输入:原创 2020-08-17 18:26:52 · 163 阅读 · 0 评论 -
算法--实现 strStr()
描述 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很原创 2020-08-16 19:00:59 · 128 阅读 · 0 评论 -
算法--字符串转整数
描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。 注意:假如该字符串中的第一个非空格字符不是一个有效原创 2020-08-13 19:32:12 · 130 阅读 · 0 评论 -
算法--回文数
描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121-。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 分析 1.判断是否是0和负数开始,直接排除 2.通过取整和取余操作获取整数中对应的数字进行比较。 简单实现 pub原创 2020-08-12 19:10:56 · 171 阅读 · 0 评论 -
算法--无重复字符的最长子串
描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是子串 的长度,“pwke” 是一个子序列,不是子串。原创 2020-08-07 18:03:49 · 169 阅读 · 0 评论 -
算法--Z 字形变换
描述 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zigzag原创 2020-08-10 18:38:39 · 129 阅读 · 0 评论