首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法练习之寻找不重复最长字符

函数判断,原序列是否包含子序列 假设 假设字符串长度为0 返回值应该为0 假设字符串长度为1 返回值为1 假设字符串长度为2 需要将第2个字符和第一个字符作比较,是否重复,如果重复,最长的长度为1不变,...如果不重复,最长的长度需要进行+1 假设字符串为3 如果前两个字符不同,但包含了第3个字符,则返回2,否则返回3 如果前两个字符相同,但不包含第三个字符,则返回2,否则返回1 假设……………… 不知道你有没有找到规律...,对于一对长的字符串,我们可以假定最长长度max为1,即是第一个字符,然后找第二个字符,如果不相同,则max+1……以此类推,每次遍历一个字符,需要和前面的字符串进行比较,然后让max持续+1,如果遇到相同的...代码思路 1、判断字符串长度是否为0,如果为0直接返回0 2、假设max为1,result(含有最长长度的字符串)对应第一个字符,指针指向第一个字符 3、遍历字符串 4、result进行追加下一个字符...,result等于该字符,进行重新寻找连续的不重复的字符串 代码实现 package main import ( "fmt" "strings" ) func Same(s string

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Go寻找最长回文字符串——中心扩展法

    题目要求 给定一个字符串,求出它的最长回文子串的长度 题目分析 常规思路 分析题目可知,该题可以抓换成两个问题如下 求出字符串的所有的子串 判断所有的字串中是回文字符串,且长W度最长 对于上面的解法属于常规思路...,求子串可以利用切片的性质比较简单 判断是否是回文 对于一个回文字符串,我们可以很轻易的找到其中的规律就是首尾逐个字符进行遍历是相同的字符因此我们可以定义两个指针指向首和尾,进行遍历比较,如果遇见不相同的则返回...= str[right] { return false } right-- } return true } 寻找子串 对于一个字符串...i + j + 1)] println("偶数", s) max = c } } return s } 代码分析 对于寻找奇数的回文...,扩展根据i为中心轴进行左右指针的移动,因此我们可以定义一个j初始化为0,i+j则为当前或者下一个字符,i-j则为当前或者前一个字符,然后对字符进行比较。

    65320

    Java - 字符编码

    字符字符集是一系列字符的集合,将每个收录的字符和数字进行映射。...最早的字符集是ASCII,使用一个字节进行存储字符,8位一共可以表示256个字符,而ASCII只使用了其中的128位,即0~127位,这128位里面包括了常用的英文字符以及标点符号。...Unicode是一个几乎包括了世上所有字符字符集,每个字符都有一个对应的独一无二的Unicode码,比如聊天时使用的emoji表情字符,GitHub上也可以通过 :grin: 这种写法来输出emoji...字符编码其实就是对Unicode字符集的实现方式,用以约定如何用1~4个字节来存储字符字符编码 UTF-8 UTF-8是可变长编码,即多字节编码,在存储不同的字符时使用的字节数量是不同的。...Java就是使用的这个编码来存储字符,中文和英文都是两个字节(即char这个基础数据类型),所以Java是双字节编码。 UTF-16LE,使用两个字节进行存储的小端编码。

    1.9K10

    java字符串分割特殊字符处理_java字符串按照特定字符分割

    String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊字符作为分割标志的时候,不使用特殊手段就会抛出...java.util.regex.PatternSyntaxException异常,比如用java中的运算符号,括号等等这个时候可以使用split(“[*]”) split(“//+”)来实现特殊字符作为分割标志...,[]和//就是用来解决这些问题的,但是有个例外,那就是 / ,这个符号比较麻烦,比如你的字符串是 aaa/bbb,由于在java字符串中/ 要用//表示所以aaa/bbb用String类型的对象存放就是...———————————————————————————— 语法: 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。...字符串或 正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 limit 可选项。该值用来限制返回数组中的元素个数。

    6.2K10

    java字符串按照特定字符分割_java 字符串分割

    问题描述: // 把字符串”192.168.1.1″按照小圆点进行分割,分割成”192″,”168″,”1″,”1″四个字符串。...在正则表达式中表示匹配任意一个字符,经过转义之后,”.”才是本身的含义,才能得到正确的分割结果。下面主要探讨上述错误写法中得到的字符串组为什么大小为0。...下面是split函数源代码(java.util.regex.Pattern.split) public String[] split(CharSequence input, int limit) {...split函数中最后的while循环会将分割之后的字符串组,从后往前清理空字符串,所以“.”在不转义的情况下,分割字符串得到的结果为空。...subSequence(int start, int end)进行分割,所以第一个子串传入参数[start = 0,end = 3],m.end()获取当前匹配到的分隔符之后的位置4;m.find()寻找下一个分隔符位置

    2.9K10

    java字符

    1、JVM中单个字符占用的字节长度跟编码方式有关,而默认编码方式又跟平台是一一对应的或说平台决定了默认字符编码方式; 2、对于单个字符:ISO-8859-1单字节编码,GBK双字节编码,UTF-8三字节编码...;因此中文平台(中文平台默认字符集编码GBK)下一个中文字符占2个字节,而英文平台(英文平台默认字符集编码Cp1252(类似于ISO-8859-1))。...在中文平台下,如果指定的字符集编码是ISO-8859-1,由于此字符集是单字节编码,所以使用getBytes("ISO-8859-1")时,每个字符只取一个字节,每个汉字只取到了一半的字符。...由于这一半的字符字符集中找不到对应的字符,所以默认使用编码63代替,也就是?。...()方法返回的字节数组的长度、内容到底是什么,因为在接下来使用新的encoding进行编码解码时,Java并不会自动地对字节数组进行扩展以适应新的encoding。

    2.1K50
    领券