当前位置: 首页> 汽车> 报价 > 推广引流渠道方法大全_ui设计页面布局和功能_建站的公司_百度站长平台论坛

推广引流渠道方法大全_ui设计页面布局和功能_建站的公司_百度站长平台论坛

时间:2025/7/8 12:41:26来源:https://blog.csdn.net/kitesxian/article/details/144061903 浏览次数: 0次
推广引流渠道方法大全_ui设计页面布局和功能_建站的公司_百度站长平台论坛

链接 链接

第一题

第一次错误的代码:

// class Solution {
// public:
//     int hammingDistance(int x, int y) {
//         int num = x^y;
//         int res = 0;
//         for(int i = 1;i<=32;i*=2)
//             if(num&i){
//                 res++;
//             }
//         return res;
//     }
// };

正确的代码:

class Solution {
public:int hammingDistance(int x, int y) {int num = x^y;int res = 0;while(num){num&=num-1;res++;}return res;}
};

x^y后得到num,num中二进制为1的位数就是x y不同的位数。

而value&(value-1)会删掉value的最后一个1, 一直删到num==0退出来。

更好的代码:

class Solution {
public:int hammingDistance(int x, int y) {int res = 0;while(x||y){res+=(x&1)^(y&1);x>>=1,y>>=1;}return res;}
};

即:只要x y有一个不为零,都进入循环,value&1拿出最后一位,根据异或特征,刚好判断是否相同,相同res+=0,否则res+=1,然后x y都右移一位。


题解:汉明距离:两个整数的二进制表示中,有多少位不一样。





第二题

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int>res;unordered_map<char,int> cnt;for(auto c:p)cnt[c]++;int tot = cnt.size();int satisfy = 0;for(int i = 0,j = 0;i<s.size();i++){--cnt[s[i]];if(cnt[s[i]]==0){satisfy++;}if(i-j+1>p.size()){if(cnt[s[j]]==0){satisfy--;}cnt[s[j]]++;j++;}if(satisfy==tot){res.push_back(j);}}return res;  }
};

 我们使用无序map存储p中每个字母出现的次数;

利用i j双指针作为窗口遍历s串,其中s在前;

每遇到一个无序map中存储过的字母,我们都减减这个字母对应的次数,显然,减到0时说明:这种字母个数满足条件了,那么我们++statisfy。

当窗口超过p的size时,我们就得把j 指向的字母往右边移动,表示从窗口中删除这个字母,但是j 指向的这个字母有可能就是p中的一个字符,也就是说:它的删除影响答案,所以我们删之前判断是否这个字母已经满足要求了,如果是,statify--;

此时我们与p串中(其实就是无序map了)对应的字母种类比较,看statify记录的种类是否已经达到,若是,此时j 表示起点,我们记录下来即可。

关键字:推广引流渠道方法大全_ui设计页面布局和功能_建站的公司_百度站长平台论坛

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: