题解 | 最长异或公共子段

最长异或公共子段

https://www.nowcoder.com/practice/2b25c51da0c547cf80a29a3f11c7dd84

import java.util.Scanner;

/**
 * @author supermejane
 * @date 2025/10/12
 * @description
 */
public class Main {
	//我只按题目推导到i = x ^ y ^ j, i + 1 = x ^ y ^ (j + 1), ......当然x ^ y是已经知道的常数
  	//对于x ^ y末尾的....0111000为例子, 对于i(inde且从1开始)从1000 ~ 1111/11000 ~ 11111/111000 ~ 111111都是可以取到最多的相同子串,当然题目例子三是综合考虑了两个串,希望尽量取少数组展现取得i = 12, j = 16
  	//至于为什么这样可以取到最长相同字串,我也不知道证明。
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        while (n-- > 0) {
            int k = in.nextInt() ^ in.nextInt();
            int cnt = 0;
            while ((k & 1) == 0) {
                cnt++;
                k >>= 1;
            }
            System.out.println(1 << cnt);
        }
    }
}

全部评论

相关推荐

03-06 18:20
门头沟学院 Java
点赞 评论 收藏
分享
小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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