开始刷题,记录一下自己的解题过程和思路。
技术渣,有什么不对的还请各位多多指点。
宝石与石头 很简单的一道题 用s中的每个字符挨个和j中的比较就好
class Solution {
public int numJewelsInStones(String J, String S) {
int jewels = 0;
int index_J = 0;
int index_S = 0;
for(index_J = 0;index_J < J.length();index_J++){
for(index_S = 0;index_S < S.length();index_S++){
if(J.codePointAt(index_J)==S.codePointAt(index_S)){
jewels++;
}
}
}
return jewels;
}
}
字符转换也是很简单的 大小写字母相差32 转换成小写字母只需要提取每个字符然后+32就可以了。
但在解这道题时我在初始化字符串时出现了问题
我使用的是
String s = null;
进行初始化,然后将字符一个个累加上去,但导致输出时前面会带null,百度后了解到
创建的时候,没有初始化时或赋值时,打印出的是null
因为String类型是一个对象,而不像int之类是基本类型有初始默认值
如果在初始时赋值“”(空值),那也算创建对象了(就是相当于new 操作)
打印出的为“”(空值)
class Solution {
public String toLowerCase(String str) {
char[] c = str.toCharArray();
for(int i =0;i < str.length();i++){
if(c[i] >= 'A'&&c[i] <='Z'){
c[i] += 32;
}
}
String S = new String(c);
return S;
}
}
翻转图像 我的想法很简单 遍历矩阵 按要求进行操作
class Solution {
public int[][] flipAndInvertImage(int[][] A) {
int temp = 0;
for(int i=0;i<A.length;i++){
for(int j=0;j<(A[i].length/2);j++){
temp = A[i][j];
A[i][j] = A[i][A[i].length-j-1];
A[i][A[i].length-j-1] = temp;
}
for(int k=0;k<A[i].length;k++){
if(A[i][k] == 0){
A[i][k] = 1;
}
else{
A[i][k] = 0;
}
}
}
return A;
}
}
汉明距离遇到的问题最大的一道题
因为平时不会用到异或所以完全没有往那方面想
最开始的想法是用循环分别求出两个数字的二进制形式然后依次比较得解
但发现循环会丢掉一位,之后尝试用if语句去补丢掉的一位,提交后发现总有遗漏于是放弃,在百度后了解到异或的用法提交通过了。
class Solution {
public int hammingDistance(int x, int y) {
int xor=x^y;
int count=0;
while(xor!=0){
xor=xor&(xor-1);
count++;
}
return count;
}
}
判断路线成圈
只需要确定RL和UD的数目是否相等就可以了
class Solution {
public boolean judgeCircle(String moves) {
int R_Counter = 0;
int L_Counter = 0;
int U_Counter = 0;
int D_Counter = 0;
for(int i=0;i<moves.length();i++){
if(moves.charAt(i)=='R'){
R_Counter++;
}
if(moves.charAt(i)=='L'){
L_Counter++;
}
if(moves.charAt(i)=='D'){
D_Counter++;
}
if(moves.charAt(i)=='U'){
U_Counter++;
}
}
if((R_Counter==L_Counter)&&(U_Counter==D_Counter)){
return true;
}
else{
return false;
}
}
}
山脉数组的峰顶索引 其实就是寻找数组中的最大值索引
class Solution {
public int peakIndexInMountainArray(int[] A) {
int max=A[0];
int a=0;
for(int i=1;i<A.length;i++){
if(A[i]>max){
max=A[i];
a=i;
}
}
return a;
}
}