#力扣 LeetCode696. 計數二進位制子串 @FDDLC
阿新 • • 發佈:2021-02-17
技術標籤:演算法&資料結構
題目描述:
https://leetcode-cn.com/problems/count-binary-substrings/
Java程式碼:
class Solution { public int countBinarySubstrings(String s) { //s.length 在1到50,000之間 int ans=0,cur=1,pre=0; for(int i=s.length()-2;i>=0;i--){ if(s.charAt(i)==s.charAt(i+1))cur++; else{ ans+=Math.min(cur,pre); pre=cur; cur=1; } } return ans+Math.min(cur,pre); } }
Java程式碼二:
class Solution { public int countBinarySubstrings(String s) { //s.length 在1到50,000之間 int ans=0,cur=1,pre=0; for(int i=s.length()-2;i>=0;i--){ if(s.charAt(i)==s.charAt(i+1))cur++; else{ pre=cur; cur=1; } if(cur<=pre)ans++; } return ans; } }
Java程式碼三:
class Solution { public int countBinarySubstrings(String s) { //s.length 在1到50,000之間 int ans=0,cur=1,pre=0,flag; for(int i=s.length()-2;i>=0;i--){ flag=s.charAt(i)^s.charAt(i+1)^1; //同或:同1異0 pre=flag*pre+(flag^1)*cur; cur=cur*flag+1; ans+=(pre+50000)/(cur+50000); //pre>=cur,+1;否則,+0 } return ans; } }