总体思路:
按普通样例“0100111”走==> 碰到’0’就给count0++,碰到‘1’就给count1++ ==> 当碰到0前面有1,就刷新一次res,并重计算count0和count1
i+1==s.size()
” ==> 故最终完善的刷新条件是 “1后面是0”或者“(i+1)=大字符串长度”class Solution {
public:
int findTheLongestBalancedSubstring(string s) {
int count1=0,count0=0,res=0;
for(int i=0;i
s[i] == '1'
作为if最初层的条件就好n=s.size()
:把将s.size()提前提出,会快一点,不然for循环里每次都得算一遍,就慢s[i]='0'
,所以else if(i==0 || s[i-1]=='1')
表明的是
s[i]='0' & i==0
:'0’作为大字符串开头s[i]='0' & s[i-1]=='1'
:'0’作为新子字符串开头class Solution {
public:
int findTheLongestBalancedSubstring(string s) {
int count0=0,count1=0,res=0,n=s.size()//①
for(int i=0;i
思路:left始终指向第一个0 ==> right不断向右遍历,当right指向0右侧第一个非0元素时,就交换left和right,并且两者都向右移动一位 ==> 如此right仅遍历即可实现题目要求
class Solution {
public:
void moveZeroes(vector& nums) {
int left = 0,n=nums.size();
if(nums==null) { //①
return;
}
for(int right=0;right