跳到正文
柠檬鱼博客

算法

分享算法知识和技巧

【算法】字符串平移

算法

需求 我们规定,字符串平移是指将字符串最左边的字符移动到最右边,其他位置的字符保持不变。现在,输入两个字符串,尝试编程判断第2个字符串是否 可以由第1个 字符串平移得到。例如输入“hello”和“llohe”,则需要返回True作为答案,因为将“hello”平移一次将变成“elloh”,再平移一次就…

【算法】查找常用字符

算法

需求 输入一组字符串,将其中的常用字符查找出来,常用字符的定义为:所输入的一组字符串中,所有的字符串中都包含此字符, 则此字符就被定义为常用字符。例如,假设我们输入一组字符串为["ball", "gad", "apple"], 则最终需要返回["a"], 因为只有字符“a”在输入的3个字符串中都出现…

【算法】求最长不含重复字符的子字符串长度

算法

需求 输入一个字符串,尝试编程找到其中最长的不包含重复字符的子字符串,并将其长度返回。例如,输入“aaa”,将返回1作为结果, 输入“abcabcbb”,将返回3作为结果。 思路 本题需要查找的是最长的不含重复字符的子串,首先可以先确定一个起始点,之后计算从此起始点向后截取可以得到的不含重复字符的最…

【算法】查找第一次出现的唯一字符

算法

需求 输入一个字符串,编程找到此字符串中第一次出现的唯一字符,尝试将其返回,如果字符串中不存在唯一字符,则返回空字符串。例如,输入“acddaeef”, 将返回“c”,因为字符“c”和“f”是字符串中的唯一字符,字符“c”是首次出现的。 思路 本题除了要找到字符串中的唯一字符外,更关键的是对唯一字符…

【算法】统计连续字符的长度

算法

需求 输入一个字符串,尝试编程返回其中最长的连续重复字符的长度。例如,输入字符串“abbbcdeff”,其中最长的连续重复字符组成的子串为“bbb”, 因此需要返回3作为答案。如果输入“hello”,需要返回2作为答案,因为其中最长的连续重复字符组成的子串为“ll”。 思路 本题是一道非常经典的字符…

【算法】分割字符串获取最大分数

算法

需求 输入一个只有“0”和“1”组成的字符串,其长度不小于2,我们需要将其从某个位置分割成左右两个子串(子串的长度都大于0), 在左串中,每出现一个0,则计1分,在右串中,每出现一个1,则计1分,尝试编程计算出所有分割方案中最高可以得多少分, 并将分数返回。例如,如果输入“00111”,当分割的左子…

【算法】分割出回文字符串

算法

需求 要求输入一个字符串,将此字符串分割成一些子串,使每个子串都是回文串(单字符的字符串也属于回文串)。 例如输入字符串"abb",则返回: ["a", "b", "b"], ["a", "bb"], 思路 本题的核心是将字符串分割出多个回文的子字符串。判断某个字符串是不是回文字符串非常简单,我们直…

【算法】平衡字符串的分割

算法

输入一个只包含“L”和“R”的字符串,并且其中"L"与"R"的个数是相等的。符合这种输入条件的字符串称为平衡字符串。尝试编程对输入的平衡字符串进行分割, 尽可能多地分割出平衡字符串子串,并将可以得到的子串数量返回。 例如,输入“RLLLRRRL”将返回3,其可以分割成“RL”、“LLRR”和“RL”…

【算法】交换字符 (2)

算法

需求 给定两个字符串A和B,可以对A中的任意字符进行替换,如果要替换某个字符,则所有的此字符都要替换成相同字符。 需要判断字符串A是否可以通过字符替换得到字符串B。 例如,如果输入字符串A为“addca”,字符串B为“cookc”,则字符串A可以通过字符替换得到字符串B。 因为将A字符串中的字符'a…

【算法】交换字符 (1)

算法

需求 输入两个字符串,如果交换第1个字符串中的两个字符后就可以得到第2个字符串,则表明这两个字符串可以相互转换。 例如输入“acb”和“cab”,可以满足转换。 思路 要满足转换条件,两个字符串需要满足如下条件: 如果两个字符串完全相同,则只有字符串中存在重复的字符时才满足条件(将重复的字符交换一次…