题解 | 翻转01

翻转01

https://www.nowcoder.com/practice/2058328e7de94037b556fd4d892820d3

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
    in := bufio.NewReader(os.Stdin)
    
    var T int
    var n,k int
    fmt.Fscan(in, &T)

    for t := 1;t<=T; t++{
        fmt.Fscan(in, &n,&k)
        var s string
        fmt.Fscan(in, &s)
        if check(s,k) {
            fmt.Println("YES")
        } else {
            fmt.Println("NO")
        }
    }
}

func check(s string,k int) bool {
    cnt := 0
    for i:=0;i<len(s)/2;i++{
        if s[i] != s[len(s)-1-i] {
            cnt++
        }
    }
  // 这里代表,如果前后不同的个数正好为K,或者K比实际多时,看字符串的长度
    if cnt == k || k > cnt && ((k-cnt) % 2 == 0 ||len(s) % 2 != 0){
        return true
    } 

    return false
}

全部评论

相关推荐

牛客87317764...:然后客户端边学边投,学个1个月投不进去都是正常的,这玩意非常看运气
投递快手等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务