携程笔试20240905

## 1

思路:前k-1位从1到k-1,剩下的倒序。

## 2
不需要修改字符串,记录修改次数,看每位修改这么多次后是否能为1,不是就增加修改次数
```java
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = 5;
    String s = "01010";
    int ans = 0;
    for(int len = 1; len <= s.length(); len+=2){
        for(int j = len;j <= s.length();j++){
            //len+1-len=1,len+1=2  1,2   0,1
            String substr = s.substring(j-len,j);
            int val = getVal(substr);
            if(val % 2 == 1)ans++;
        }
    }
    System.out.println(ans);
}

public static int getVal(String s){
    int ans = 0;
    //从后往前遍历,记录修改次数
for(int i = s.length()-1; i >= 0;i--){
        if(s.charAt(i) == '0'){
            if(ans % 2 == 0) {
                ans++;
            }
        }else{
            if(ans % 2 == 1){
                ans++;
            }
        }
    }
    return ans;
}
```

## 3

回溯,首位为0要特判

## 4

暴力过25%
全部评论
他不是要最小嘛,直接倒叙不满足最小的嘛
点赞 回复 分享
发布于 09-06 00:43 江苏

相关推荐

不愿透露姓名的神秘牛友
12-17 17:43
Java抽象带篮子:绝绝子暴风吸入啊
点赞 评论 收藏
分享
程序员小白条:投太少了,多投点吧,二本就海投,然后简历上加点奖项或者四六级之类的,别管有没有用,另外最好搞下个人博客,定期输出一些文章和学习总结,也可以去github参与一下开源项目提一些PR,总会有中小公司看的上的
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务