字符串

作者: 每皮1024 | 来源:发表于2022-07-24 17:43 被阅读0次

前言

字符串类型的题目,个人在一些特定语言常用的字符串方法比较容易忘记,比如长度、某个位置的字符的获取、遍历等等。

题目

一、5. 最长回文子串

这个方法我主要使用了中心扩散法,下面用圆括号标识的是特定语言(比如 Golang )的一些常见使用方法
Golang

func longestPalindrome(s string) string {
    // (1). 获取字符串长度
    if len(s) == 0 {
        return ""
    }

    // 我们需要从一个字符扩展,或者从两个字符之间开始扩展
    // start 和 end 是最长回文字符串的头和尾
    var start, end int
    // (2). 遍历字符串,它默认左边是 index 和对应的 character,如果不需要 character,可以省略,如下
    for i := range s {
        odd := expandAroundCenter(s, i, i)
        even:= expandAroundCenter(s, i, i+1)
        var len int
        if odd > even {
            len = odd
        } else {
            len = even
        }
        if len > (end - start + 1) {
            start = i - (len-1)/2
            end = i + len/2
        }
    }
    // (3). 获取字符串的一部分,左闭右开
    return s[start:end+1]
}

// 这个函数默认 left 是在正常范围内,right 可能会等于 len(s), 并且不保证 left 和 right 的值是一样的
func expandAroundCenter(s string, left int, right int) int {
    // 先根据假定做好边界处理, 其实下边的 for 循环已经覆盖了  s[left] != s[right] 这种场景,这个判断已经是冗余的,但为了更明显起见,这里还是写了一下
    // (4). 获取字符串在某个特定位置的 character
    if right == len(s) || s[left] != s[right] {
        return 1
    }
    // (5). golang 里边 for 循环第三部分如果有两个变量应当如下边的方式写,不能写作 "left--, right++"
    for ; left >= 0 && right < len(s) && s[left] == s[right]; left, right = left - 1, right + 1 {
    }
    // 注意,这个地方我写错了,写成了 right - left + 1,但是要知道实际上跳出上边的 for 循环时,left 和 right 的字符已经不同或者数组越界了,所以其实应该是下面这样的
    return right - left - 1
}

相关文章

  • Javascript知识点整合

    字符串 单行字符串: ‘字符串’或“字符串” 多行字符串: `多行字符串` 字符串操作: 字符串连接‘+’号 长度...

  • C++基础字符串

    字符串的构造 字符串特性描述 字符操作 字符串赋值 字符串连接 字符串比较 字符串查找 字符串替换 字符串删除 字...

  • iOS中的NSString与NSMutableString

    字符串的创建 字符串读写 字符串的比较 字符串的搜索 字符串截取 字符串替换 字符串与路径 字符串转换 NSMut...

  • iOS NSString用法总结

    字符串属性 字符串截取 字符串比较 字符串搜索 字符串拼接 字符串基本类型转换 字符串分行,分段 字符串列举(按条...

  • php 字符串常见方法汇总

    字符串拼接 字符串检索 字符串截取 字符串替换 字符串大小写转化 字符串转数组 字符串格式化

  • iOS 字符串截取、iOS 字符串替换、iOS 字符串分隔、iO

    iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 ...

  • PHP中字符串函数库常用函数解析 -- PHP 学习 (十一)

    常用字符串函数分类: 字符串长度, 字符串查找, 字符串大小写转换, 字符串截取, 字符串 ASCII, 字符串加...

  • Kotlin语言(二):字符串类型

    1、字符串定义 2、字符串删除空格 3、字符串比较 4、字符串切割 5、字符串截取 6、字符串替换 7、字符串模板

  • 字符串扩展

    求字符串大小 字符串解码、转换 字符串截取 字符串汉字处理 字符串 Mac地址 字符串进制转换

  • 2020-09-30字符串

    day8-字符串 字符串的操作 in 和 not in字符串1 in 字符串2 - 判断字符串1是否是字符串...

网友评论

      本文标题:字符串

      本文链接:https://www.haomeiwen.com/subject/ficwirtx.html