力扣Day27
作者:互联网
459、重复的子字符串
给定一个非空的字符串 s
,检查是否可以通过由它的一个子串重复多次构成。
法一:
class Solution {
public boolean repeatedSubstringPattern(String s) {
String str = s + s;
return str.substring(1, str.length() - 1).contains(s);
}
}
法二:暴力解法:存在重复的子字符串,那么字符串s一定是子字符串的倍数
class Solution {
public boolean repeatedSubstringPattern(String s) {
int n = s.length();
for(int r = n/2; r >= 1; r--){
if(n % r == 0){
String substring = s.substring(0, r);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < n / r; i++){
sb.append(substring);
}
if(sb.toString().equals(s)) return true;
}
}
return false;
}
}
461、汉明距离
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
法一:二进制——位运算 (思路与Day15的191、位1的个数 一样)
class Solution {
public int hammingDistance(int x, int y) {
int count=0;
int res=x^y;
while(res!= 0) {
if((res & 1) == 1) {
count++;
}
res=res >>> 1;
}
return count;
}
}
法二:内置位计数
2006、差的绝对值为 K 的数对数目
给你一个整数数组 nums
和一个整数 k
,请你返回数对 (i, j)
的数目,满足 i < j
且 |nums[i] - nums[j]| == k
。
|x|
的值定义为:
- 如果
x >= 0
,那么值为x
。 - 如果
x < 0
,那么值为-x
。
class Solution {
public int countKDifference(int[] nums, int k) {
int count=0;
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(Math.abs(nums[i]-nums[j])==k){
count++;
}
}
}
return count;
}
}
标签:substring,return,String,nums,int,res,Day27,力扣 来源: https://blog.csdn.net/qq_51329170/article/details/122839876