LeetCode___week1

开始刷题,记录一下自己的解题过程和思路。

技术渣,有什么不对的还请各位多多指点。

宝石与石头 很简单的一道题 用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;
    }
}

 

技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值