Skip to content

Latest commit

 

History

History
105 lines (81 loc) · 1.62 KB

1342.-duan-kai-de-xiang-lian.md

File metadata and controls

105 lines (81 loc) · 1.62 KB

1342. 断开的项链

{% tabs %} {% tab title="Go" %}

package main

import (
    "fmt"
    )
    
    
func get(c rune) (int){
    // fmt.Println(c,c == 'b')
    if c == 'b' {
        return 1
    }
    return 2
}


func max(a, b int) (int){
    if a > b {
        return a
    } 
    return b
}


func main(){
    var N, ans int
    var S string
    fmt.Scanf("%d\n%s",&N,&S)
    S += S
    
    var s = []rune(S)
    for i:= 0; i < N; i++ {
        l := i 
        r := i + N - 1
        var cnt,left, right int
        
        for l <= r && (s[l] == 'w' || left|get(s[l]) != 3){
            
            if s[l] !='w'{
                left |= get(s[l])
            }
            l ++
            cnt ++
        }

        for l <= r && (s[r] == 'w' || right|get(s[r]) != 3){
            if s[r] != 'w' {
                right |= get(s[r])
            }
            r --
            cnt ++
        } 
        ans = max(cnt, ans)
        // fmt.Println(l, r, cnt) 
    }
    fmt.Println(ans) 
    
}

{% endtab %}

{% tab title="Python" %}

def get(c):
    if c == "b":
        return 1
    return 2

N= int(input())
s = [x for x in  input()]

s += s
ans = 0
for i in range(N):
    l = i
    r = i + N - 1
    cnt = left = right = 0
    while l <= r and (s[l] == "w" or left|get(s[l]) != 3):
        if s[l] != "w" :
            left |= get(s[l])
        cnt += 1
        l += 1
            
    while l <= r and (s[r] == "w" or right|get(s[r]) != 3):
        if s[r] != "w" :
            right |= get(s[r])
        cnt += 1
        r -= 1
            
    ans = max(ans, cnt)
    
print(ans)
    

{% endtab %} {% endtabs %}