yankewei / LeetCode

LeetCode 问题的解决方法
MIT License
6 stars 0 forks source link

最长的字母序连续子字符串的长度 #161

Open yankewei opened 2 years ago

yankewei commented 2 years ago

字母序连续字符串是由字母表中连续字母组成的字符串。换句话说,字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。

例如,"abc" 是一个字母序连续字符串,而 "acb" 和 "za" 不是。 给你一个仅由小写英文字母组成的字符串s,返回其 最长 的 字母序连续子字符串 的长度。

示例 1:

输入:s = "abacaba"
输出:2
解释:共有 4 个不同的字母序连续子字符串 "a"、"b"、"c" 和 "ab" 。
"ab" 是最长的字母序连续子字符串。

示例 2:

输入:s = "abcde"
输出:5
解释:"abcde" 是最长的字母序连续子字符串。

提示:

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/length-of-the-longest-alphabetical-continuous-substring 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

yankewei commented 2 years ago

模拟

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function longestContinuousSubstring($s) {
        $result = 1;
        $consequent[] = $s[$i];

        for ($i = 0; $i < strlen($s); $i++) {
            if (ord($consequent[count($consequent)-1]) + 1 === ord($s[$i])) {
                $consequent[] = $s[$i];
                continue;
            }

            $result = count($consequent) > $result ? count($consequent) : $result;
            $consequent = [];
            $consequent[] = $s[$i];
        }

        return count($consequent) > $result ? count($consequent) : $result;
    }
}