public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 读取字符串的长度 String s = sc.next(); // 读取字符串 s += s; // 将字符串自身拼接,模拟环形序列 int ans = 1; // 用于记录最长的连续不同字符子序列的长度 int cur = 1; // 当前连续不同字符子序列的长度 // 遍历拼接后的字符串,寻找最长的连续不同字符子序列 for (int i = 1; i < 2 * n; i++) { if (s.charAt(i) != s.charAt(i - 1)) { // 当前字符与前一个字符不同 cur++; ans = Math.max(ans, cur); // 更新最大长度 } else { cur = 1; // 如果字符相同,重新开始计数 } } // 最终结果应该是 ans 与 n 的最小值,避免环形序列的重复计数 System.out.println(Math.min(ans, n)); sc.close(); }
点赞 评论

相关推荐

01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务