1. 程式人生 > 其它 >#力扣 LeetCode1446. 連續字元 @FDDLC

#力扣 LeetCode1446. 連續字元 @FDDLC

技術標籤:演算法&資料結構

題目描述:

https://leetcode-cn.com/problems/consecutive-characters/

Java程式碼:

class Solution {
    public int maxPower(String s) { //1 <= s.length <= 500
        int[] cnt=new int[s.length()];
        int ans=cnt[0]=1;
        for(int i=1,slen=s.length();i<slen;i++){
            if(s.charAt(i)==s.charAt(i-1))cnt[i]=1+cnt[i-1];
            else cnt[i]=1;
            if(ans<cnt[i])ans=cnt[i];
        }
        return ans;
    }
}

Java程式碼二:

class Solution {
    public int maxPower(String s) { //1 <= s.length <= 500
        int[] cnt=new int[s.length()];
        int ans=cnt[0]=1;
        for(int i=1,slen=s.length();i<slen;i++){
            if(s.charAt(i)==s.charAt(i-1)){
                cnt[i]=1+cnt[i-1];
                if(ans<cnt[i])ans=cnt[i];
            }
            else{
                if(i+ans>=slen)break; //可無;在某些情況下可以提前退出
                cnt[i]=1;
            }
        }
        return ans;
    }
}

優化:

class Solution {
    public int maxPower(String s) { //1 <= s.length <= 500
        int ans=1,cnt=1;
        for(int i=1,slen=s.length();i<slen;i++){
            if(s.charAt(i)==s.charAt(i-1)){
                if(ans<++cnt)ans=cnt;
            }
            else{
                if(i+ans>=slen)break; //可無;在某些情況下可以提前退出
                cnt=1;
            }
        }
        return ans;
    }
}

class Solution {
    public int maxPower(String s) { //1 <= s.length <= 500
        int ans=1,cnt=1;
        for(int i=1,slen=s.length();i<slen;i++){
            if(s.charAt(i)==s.charAt(i-1)){
                if(ans<++cnt)ans=cnt;
            }
            else{
                cnt=1;
            }
        }
        return ans;
    }
}