java leetcode之[神奇的位运算 简单]461. 汉明距离
2021/6/15 12:23:09
本文主要是介绍java leetcode之[神奇的位运算 简单]461. 汉明距离,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目的链接在这里:https://leetcode-cn.com/problems/hamming-distance/
目录
- 题目大意
- 一、示意图
- 二、解题思路
- 位置比较
题目大意
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
一、示意图
二、解题思路
当然有个笨方法 就是先把这两个数 转换为2进制,然后再一个一个的比较 记录
位置比较
代码如下:
class Solution { public int hammingDistance(int x, int y) { //当然有个笨方法 就是先把这两个数 转换为2进制,然后再一个一个的比较 记录 String tempx=getTwo(x); String tempy=getTwo(y); /* StringBuilder sb1=new StringBuilder(tempx); StringBuilder sb2=new StringBuilder(tempy);*/ /* //然后直接就扩容好了 boolean flagx=false; boolean flagy=false;*/ int lenx=tempx.length(); int leny=tempy.length(); // int max=Math.max(lenx,leny); /* //进行扩容 //但是还有一个就是判断他们有没有被翻转 while (lenx<max){ //原来细节在这 那就索性不判断长度了 sb1.append(0); lenx++; flagx=true; } if(flagx) { tempx = sb1.reverse().toString(); } while (leny<max){ sb2.append(0); leny++; flagy=true; } if(flagy) { tempy = sb2.reverse().toString(); } //这样就两个长度相同了*/ int result=0; char[] charx=tempx.toCharArray(); char[] chary=tempy.toCharArray(); /* int temp=0; if(lenx!=leny){ //说明有个最大值 if(lenx>leny){ temp=lenx-leny; }else{ temp=leny-lenx; } }*/ //这里应该是从后面往前面比 int i=lenx-1; int j=leny-1; for( ;i>=0&&j>=0;i--,j--){ //然后还有这里的问题 if(charx[i]!=chary[j]){ result++; } } //这里有个细节是 因为如果等于0 就不会出现在首位 所以肯定是1 所以肯定是不同的 那就是肯定是这两个长度的差值 作为最后的结果 //好像这个细节不奏效 那还是需要进行判断的呀 if(i>=0){ //说明i还没到 那就需要进行判断 while (i>=0){ if(charx[i]!='0') result++; i--; } } if(j>=0){ //说明j还没到 那就需要进行判断 while (j>=0){ if(chary[j]!='0') result++; j--; } } return result; } public String getTwo(int x){ //问题出在了这里 就是需要进行翻转一下 String result=""; while(x>0){ result+=(x%2); x/=2; } StringBuilder sb=new StringBuilder(result); return sb.reverse().toString(); } }
这篇关于java leetcode之[神奇的位运算 简单]461. 汉明距离的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南