当前位置: 首页> 娱乐> 明星 > 工程项目挂网在什么网站上看_有效果的网站排名_个人网站设计内容_整站排名优化公司

工程项目挂网在什么网站上看_有效果的网站排名_个人网站设计内容_整站排名优化公司

时间:2025/7/13 17:25:48来源:https://blog.csdn.net/IT_Fly/article/details/142376132 浏览次数:0次
工程项目挂网在什么网站上看_有效果的网站排名_个人网站设计内容_整站排名优化公司

【题目描述】

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

  • 例如,"abc" 是一个字母序连续字符串,而 "acb" 和 "za" 不是。

给你一个仅由小写英文字母组成的字符串 s ,返回其 最长 的 字母序连续子字符串 的长度。

示例 1:

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

示例 2:

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

提示:

  • 1 <= s.length <= 105
  • s 由小写英文字母组成

题目链接:. - 力扣(LeetCode)

【解题代码】

public class LongestContinuousSubstring {public static void main(String[] args) {String s = "abcde"; //"abacaba";int result = new LongestContinuousSubstring().longestContinuousSubstring(s);System.out.println("最长的字母序连续子字符串的长度:" + result);}public int longestContinuousSubstring(String s) {int maxLen = 0, curLen = 1;int cur = 1;char lastChar = s.charAt(0);while (cur < s.length()) {char curChar = s.charAt(cur);if (curChar - lastChar == 1){curLen++;if (curLen == 26) return 26;} else{if (curLen > maxLen) maxLen = curLen;curLen = 1;}lastChar = curChar;cur++;}return curLen > maxLen ? curLen : maxLen;}public int longestContinuousSubstring1(String s) {int maxLen = 0, curLen = 1;int cur = 1;while (cur < s.length()) {if (s.charAt(cur) - s.charAt(cur - 1) == 1){curLen++;if (curLen == 26) return 26;} else{if (curLen > maxLen) maxLen = curLen;curLen = 1;}cur++;}return curLen > maxLen ? curLen : maxLen;}}

【解题思路】

根据题目描述,感觉这道题应该比较简单,就是从头到尾不断比较字符串中相邻得两个字符,如果后一个字符比前一个字符大1,那么当前子字符串就是连续的,将其长度加1,如果不是,那么当前连续子字符串就到此为止,重新开始计算新的子字符串。按照这个思路很快完成编码,并提交成功

【解题步骤】

  1. 定义相关变量:最大子字符串长度maxLen,当前子字符串长度curLen,当前字符串索引值cur,上一字符lastChar等
    int maxLen = 0, curLen = 1;
    int cur = 1;
    char lastChar = s.charAt(0);
  2. 从头到尾依次获取字符串当前字符
    while (cur < s.length()) {char curChar = s.charAt(cur);
  3. 如果当前字符串比上一字符串大1,那么当前子字符串就是连续的,将其长度加1
     if (curChar - lastChar == 1){curLen++;if (curLen == 26) return 26;
    } 
  4. 否则那么当前连续子字符串就到此为止,重新开始计算新的子字符串
    else{if (curLen > maxLen) maxLen = curLen;curLen = 1;
    }
  5. 更新上一字符串值,以及更新当前字符串索引
    lastChar = curChar;
    cur++;
  6. 返回最终结果
    return curLen > maxLen ? curLen : maxLen;

【思考总结】

  1. 此题算法实现思路:从头到尾不断比较字符串中相邻得两个字符,如果后一个字符比前一个字符大1,那么当前子字符串就是连续的,将其长度加1,如果不是,那么当前连续子字符串就到此为止,重新开始计算新的子字符串。
  2. LeetCode解题之前,一定不要看题解,看了就“破功”了!
关键字:工程项目挂网在什么网站上看_有效果的网站排名_个人网站设计内容_整站排名优化公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: