【每日算法】字符串(简单)

简介: 字符串(简单)

16fb98eea012ef0cb446588ddc50662.png

题目 一

剑指 Offer 05. 替换空格 - 力扣(LeetCode)

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例:

输入:s = "We are happy."
输出:"We%20are%20happy."
复制代码

分析一

拿到这道题,首先想到的就是抖个机灵,这使用正则替换多方便呀,三下五除二,给出一个解法,先过了再说,提升一波自信先哈哈

实现

function replaceSpace(s: string): string {
    const reg = / /g
    const result = s.replace(reg, '%20')
    return result
};
复制代码

分析二

显然这道题考察的目的肯定不是让我们用简单的 replace 方法处理,那么我们中规中矩的用遍历做一遍看看

使用遍历的话那就新建一个空字符串,遍历目标字符串,出现空格时替换成%20,否则累加,得出结果即为所求

实现

function replaceSpace(s: string): string {
    let result: string = ''
    for (let i of s) {
        if (i === ' ') {
            result += '%20'
        } else {
            result += i
        }
    }
    return result
};
复制代码

题目 二

剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode)

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

示例:

输入: s = "abcdefg", k = 2
输出: "cdefgab"
复制代码

分析一

字符串的题解法通常都会比较取巧,例如本题

由于字符串的转移是保持相对位置不变的

故可以使用复制扩展字符串的方法,在最后截取我们需要的部分来得到我们想要的结果

实现

function reverseLeftWords(s: string, n: number): string {
    const start:number = n
    const end: number = s.length
    s+=s
    return s.slice(start, end + n)
};
复制代码

分析 二

对于字符串相关的题,还有一个常见思路就是先转换为数组,利用操作数组的方法来求解

例如在遍历数组的时候,截取头部前n个元素,拼接到尾部,即得到我们想要的结果

实现

function reverseLeftWords(s: string, n: number): string {
    let arr: string[] = [...s]
    while(n > 0) {
        arr.push(arr.shift())
        n --
    }
    return arr.join('')
};
相关文章
|
2月前
|
算法
【优选算法】—— 字符串匹配算法
【优选算法】—— 字符串匹配算法
|
3月前
|
人工智能 算法 测试技术
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
|
4月前
|
算法 测试技术 C#
【动态规划】【字符串】C++算法:正则表达式匹配
【动态规划】【字符串】C++算法:正则表达式匹配
|
4月前
|
算法 Java C++
试题 算法训练 最长字符串
试题 算法训练 最长字符串
11 0
|
4月前
|
算法 C++ 索引
leetcode-28:实现 strStr()(字符串匹配,暴力匹配算法和KMP算法)
leetcode-28:实现 strStr()(字符串匹配,暴力匹配算法和KMP算法)
32 0
|
3月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
73 0
|
13天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
23 1
|
22天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
23 0
|
3月前
|
算法 测试技术 C++
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串