力扣3228——将 1 移动到末尾的最大操作次数

题目

给你一个 二进制字符串 s。

你可以对这个字符串执行 任意次 下述操作:

选择字符串中的任一下标 i( i + 1 < s.length ),该下标满足 s[i] == '1' 且 s[i + 1] == '0'。

将字符 s[i] 向 右移 直到它到达字符串的末端或另一个 '1'。例如,对于 s = "010010",如果我们选择 i = 1,结果字符串将会是 s = "000110"。

返回你能执行的 最大 操作次数。

示例

示例 1:

输入: s = "1001101"

输出: 4

解释: 可以执行以下操作:

选择下标 i = 0。结果字符串为 s = "0011101"。

选择下标 i = 4。结果字符串为 s = "0011011"。

选择下标 i = 3。结果字符串为 s = "0010111"。

选择下标 i = 2。结果字符串为 s = "0001111"。

示例 2:

输入: s = "00111"

输出: 0

提示

1 <= s.length <= 10^5

s[i] 为 '0' 或 '1'。

思路

对于 1001101,从左到右计算连续的1,1001101连续1为1次

对于 0011101,从左到右计算连续的1,0011101连续1为3次

对于 0001111,从左到右计算连续的1,0001111连续1为4次,但是不可移动

因此总移动次数sum = 1+ 3 = 4

代码

java 复制代码
class Solution {
    public int maxOperations(String s) {
        char[] s1 = s.toCharArray();
        int sum = 0;
        int lianxu_one = 0;
        int jingwei = 0;
        for(int i=0;i<s.length();i++){
            if(s1[i]=='1'){
                lianxu_one++;
                jingwei = 1;
            }
            else{
                if(jingwei == 1)
                    sum += lianxu_one;
                jingwei = 0;
            }
        }
        
        return sum;
    }
}
相关推荐
2501_9011478316 小时前
PyTorch DDP官方文档学习笔记(核心干货版)
pytorch·笔记·学习·算法·面试
Daydream.V16 小时前
决策树三中分类标准
算法·决策树·分类
闲人不梦卿16 小时前
数据结构之排序方法
数据结构·算法·排序算法
TracyCoder12316 小时前
LeetCode Hot100(24/100)——21. 合并两个有序链表
算法·leetcode·链表
power 雀儿16 小时前
前馈网络+层归一化
人工智能·算法
爱吃rabbit的mq16 小时前
第10章:支持向量机:找到最佳边界
算法·机器学习·支持向量机
木非哲17 小时前
AB实验高级必修课(四):逻辑回归的“马甲”、AUC的概率本质与阈值博弈
算法·机器学习·逻辑回归·abtest
兩尛17 小时前
45. 跳跃游戏 II
c++·算法·游戏
执风挽^17 小时前
Python_func_basic
开发语言·python·算法·visual studio code
努力d小白17 小时前
leetcode438.找到字符串中所有字母异位词
java·javascript·算法