当前位置: 代码迷 >> 综合 >> 【Lintcode】1340. add character
  详细解决方案

【Lintcode】1340. add character

热度:23   发布时间:2024-02-24 11:23:06.0

题目地址:

https://www.lintcode.com/problem/add-character/description

给定一个字符串,如果其不包含子串"aaa",称其合法。允许在这个字符串的任意位置插入字符'a',如果要保持字符串合法,最多可以加多少个'a'。题目保证初始字符串合法。

可以遍历两次,第一次数一下连续的a的位置,能插入多少个,然后第二次数一下两个非a的地方能插入多少个,累加起来即可。代码如下:

public class Solution {
    /*** @param str:* @return: the max sum you can add*/public int addCharacter(String str) {
    // Write your code here.if (str == null || str.isEmpty()) {
    return 2;}int res = 0;for (int i = 0, j; i < str.length(); i++) {
    if (str.charAt(i) == 'a') {
    j = i;while (j < str.length() && str.charAt(j) == 'a') {
    j++;}res += 2 - (j - i);i = j;}}// 首尾如果能插入的话就累加上去if (str.charAt(0) != 'a') {
    res += 2;}if (str.charAt(str.length() - 1) != 'a') {
    res += 2;}for (int i = 0; i < str.length() - 1; i++) {
    if (str.charAt(i) != 'a' && str.charAt(i + 1) != 'a') {
    res += 2;}}return res;}
}

时间复杂度O(n)O(n)O(n),空间O(1)O(1)O(1)

  相关解决方案