LeetCode刷题记录01

news2024/12/23 13:16:26

1704判断字符串的两半是否相似

    • 题目
    • 我的思路
    • 我的代码
    • 提交结果
    • 其他解
      • 简述思路
      • 提交结果
    • 总结

我的日常碎碎念:今天下班在看综艺,看到群里班长开了个会议,于是决定开始学习,他说今天的每日一题好简单,让我也去刷一下。嗯好吧,我忘了我的账号,微信扫码登录的时候发现这是又新开了个号,当下就决定那就记录下我的刷题进度吧。就写文前的3小时创的号,大家看到这篇文的时候也可以和我一起打卡了。菜鸟想成大神啊!

题目

1704判断字符串的两半是否相似

给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。
两个字符串 相似 的前提是它们都含有相同数目的元音(‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’)。注意,s 可能同时含有大写和小写字母。
如果 a 和 b 相似,返回 true ;否则,返回 false 。

给出的提示(即条件)
2 <= s.length <= 1000
s.length 是偶数
s 由 大写和小写 字母组成

我的思路


关键字:偶数长度  含相同数目的元音  包含大小写

结论:

  1. 稍微晦涩的说法:偶数长度对半分,index从0开始,可划分为0~s.length/2s.length/2~s.length,都是前闭后开的区间;
    通俗来讲:就是以s.length/2为分隔线,小于它的为前半段,大于等于它的为后半段
    这么说是因为偶数长度刚好一半一半分嘛,下标又是从0开始的,因此才会说0~s.length/2(即0≤前半段<s.length/2)为前半段字符串【怕想不通,所以很啰嗦在解释】
    比如说:[1,2,3,4]  偶数长度吧,对半砍吧,那就[1,2]和[3,4],可它们对应的各自的下标是0123,所以说要想刚好分一半,那就得 < 4/2(s.length/2)
  2. 判断相似条件是前后字符串是否含相同数目的元音
  3. 不论大小写都要计算,其实也可以是忽略大小写(但我并没有往这方面想,是看了班长的题解)

我用一个字符串temp来表示大小写元音字母,将传进来的字符串参数转成一个字符数组,对其进行循环遍历,通过temp.indexOf来判断当前字符是否包含在其元音字符串模板里,如果包含则判断它是否小于s.length/2,如果是则前半段的元音数目+1,否则后半段的元音数目+1,最后返回这两个值是否相等的boolean值

我的代码

class Solution {
    public boolean halvesAreAlike(String s) {
    	//将大小写元音字母写成一个字符串
        String temp = "aeiouAEIOU";
        int f=0,b=0;//定义一个记录前半段元音数目的变量f,一个记录后半段元音数目的变量b
        //将传入的字符串参数转为字符数组
        char[] chars = s.toCharArray();
        //直接循环遍历整个字符数组
        for (int i=0;i<chars.length;i++) {
        	//判断该字符是否是元音
            if (temp.indexOf(chars[i])!=-1){
            	//是元音,且在前半段范围内
                if(i<chars.length/2){
                    f++;
                }else {
                    b++;//不在前半段范围内时,计数
                }
            }
        }
        //循环结束后,判断前后半段的元音数目是否相等
        return f==b;
    }
}

提交结果

在这里插入图片描述

其他解

简述思路

直接用一个方法(函数)来计算字符串的元音数目,返回该值;
将字符串分为前后半段依次作为参数传入该方法,得到返回值并进行比较,返回相似结果。

class Solution {
    public boolean halvesAreAlike(String s) {
    	//通过substring获取前后半段字符串
    	//substring() 方法返回字符串的子字符串
        String s1 = s.substring(0,s.length()/2);
        String s2 = s.substring(s.length()/2);
        //调用自定义方法,得到元音数目
        int a = count(s1);
        int b = count(s2);
        //返回比较元音数目的布尔值
        return a==b;
    }
    //自定义一个用于计算字符串中包含多少个元音数目的方法
    public static int count(String s){
        int cnt =0;
        //遍历字符串
        for (int i = 0; i < s.length(); i++) {
        	//获取当前下标的字符,再转为String类型
            String a = String.valueOf(s.charAt(i));
            //调用字符串的忽略大小写的equalsIgnoreCase方法
            //equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写
            if (a.equalsIgnoreCase("a")||a.equalsIgnoreCase("e")||a.equalsIgnoreCase("i")
                    ||a.equalsIgnoreCase("o")||a.equalsIgnoreCase("u")){
                //是元音,计数
                cnt++;
            }
        }
        //返回元音数目
        return cnt;
    }
}

提交结果

在这里插入图片描述

总结

  通过比较执行时间及内存消耗来说,我的那个思路看起来还不错嘛,只有通过不同算法的比较,才能够找到适合自己的最优解,感谢班长给我提供的另一个解题思路,从另一方面也说明了我对字符串的常用方法还不够了解。
  呜呜呜呜,写文好难呀,现在都凌晨三点了,等睡醒了再补补String类型的常用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组的定义与使用

文章目录数组的基本概念为什么要使用数组什么是数组数组的创建及初始化数组的创建数组的初始化数组的使用数组中元素的访问遍历数组数组是引用类型基本数据类型与引用类型变量的区别认识null数组的应用场景保存数据作为函数的参数参数传基本数据类型参数传数组类型作为函数的返…

TFN T6300A 网络综合测试仪 以太网数据 千兆以太网测试仪 OTDR E1 PRI V.35/V.24 光功率计一体机

一款功能强大、便携式、方便使用、价格便宜的高性价比手持式以太网测试仪是企业中网络管理和维护人员的刚需仪器。好的以太网测试仪可以帮助工作人员迅速解决网络不通、网速慢、丢包、延迟等问题。 当今以太网测试仪市场参差不齐&#xff0c;说的功能一个比一个强&#xff0c;…

你的第一个基于Vivado的FPGA开发流程实践——二选一多路器

你的第一个基于Vivado的FPGA开发流程实践——二选一多路器 1 原理图 2 开发流程 首先我们先打开安装好的Vivado软件 创建一个文件 选择你的开发板 创建一个源文件 现在我们就可以根据原理使用Verilog代码实验这个功能了 module mux2( //端口列表a,b,sel,out);//交代端口类…

RabbitMQ第二个实操小案例——WorkQueue

文章目录RabbitMQ第二个实操小案例——WorkQueueRabbitMQ第二个实操小案例——WorkQueue 讲第二个案例之前&#xff0c;我们先看下前面第一个案例的模型&#xff1a; 可以看到&#xff0c;我们只有一个发布者和一个消费者&#xff0c;通过Queue队列&#xff0c;实现最简单的消…

02 【nodejs开发环境安装】

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性&#xff08;比4.x多些&#xff09;&#xff0c;属于过渡产品&#xff0c;现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

e智团队实验室项目-第三周-经典的卷积神经网络的学习

e智团队实验室项目-第三周-卷积神经网络的学习 赵雅玲 *, 张钊* , 李锦玉&#xff0c;迟梦瑶&#xff0c;贾小云&#xff0c;赵尉&#xff0c;潘玉&#xff0c;刘立赛&#xff0c;祝大双&#xff0c;李月&#xff0c;曹海艳&#xff0c; (淮北师范大学计算机科学与技术学院&am…

【树莓派不吃灰】基础篇⑱ 从0到1搭建docker环境,顺便安装一下emqx MQTT Broker、HomeAssistant、portainer

目录1. 前言2. 搭建docker环境3. docker简介3.1 docker解决什么问题&#xff1f;3.2 docker VS vm虚拟机3.2.1 vm虚拟机3.2.2 docker3.3 docker如何解决问题&#xff1f;3.4 docker运行架构3.4.1 镜像 : image3.4.2 容器 : container3.4.3 仓库 : repository3.5 国内镜像加速3.…

python easygui怎么修改默认按钮名字

1.执行以下代码找到easygui安装位置 import easyguiprint(easygui.__file__)2.打开上述路径下boxes文件夹下需要修改的组件 如此时想要修改选项栏的默认按钮名字 则打开choice_box.py文件 执行如下图 可以看到有Cancel、SelectALL、ClearALL、OK四个默认按钮&#xff0c;可否…

Linux下动静态库的制作与使用

学习导航一、关于动静态库的基本认识二、设计库的工程师角度(1)制作静态库(2)制作动态库二、使用库的用户角度(1)使用静态库(2)使用动态库三、理解的角度一、关于动静态库的基本认识 1.静态库 静态库以 .a 作为文件后缀程序在编译链接的时候&#xff0c;将静态库的代码拷贝到…

[TCP/IP] Linux 搭建服务器局域网

文章目录[TCP/IP] Linux 搭建服务器局域网1. 使用python内置库http.server2. 使用Http-Server[TCP/IP] Linux 搭建服务器局域网 1. 使用python内置库http.server python3: http.server 命令行启动&#xff1a; # python 3 python -m http.server 8000 # python 2 python -m S…

ZYNQ_FPGA_SPI通信协议多种实现方式

文章目录PLPSSPIGPIOAXI-GPIOAXI-Quad-SPI&#xff08;待测试&#xff09;本文记录一下在使用AD9363中的SPI通信问题&#xff0c;同时针对在ZYNQ系列开发板上实现SPI的方法做一个总结。ZYNQ系列包含了PL端和PS端&#xff0c;因为本科阶段有一定的ARM的开发经验&#xff0c;便想…

2022年,软件测试已经不吃香了吗?

最近因为疫情等各种原因&#xff0c;大厂裁员&#xff0c;失业等等频频受到关注。 不解释&#xff0c;确实存在&#xff0c;各行各业都很难&#xff0c;但是&#xff0c;说软件测试行业不吃香&#xff0c;我还真不认同&#xff08;不是为培训机构说好话&#xff0c;大环境不好…

JVM从入门到入魔,这份JVM必知必会的完整版带你彻底玩懂JVM

市面上各类 JVM 相关的资料虽多如牛毛&#xff0c;但是明显都很难让大家系统性地学明白&#xff0c;同时一线大厂技术面试现在 JVM 知识也是必考科目。 在大厂摸爬滚打 10 多年的 Java 高级技术专家全面梳理了系统化学习 JVM 的知识和经验&#xff0c;从入门到入魔&#xff0c…

位运算常用技巧以及练习

几个有趣的操作 利用或操作|和空格将英文字符转换成小写 // 可以变成小写i : a | fmt.Printf("%c\n", i)j : A | fmt.Printf("%c\n", j)利用与操作&和下划线把英文字符转换成大写 // 可以变成大写m : b & _n : B & _fmt.Printf("%c\n…

大数据ClickHouse进阶(二十七):ClickHouse服务监控

文章目录 ClickHouse服务监控 一、系统表 1、metrics 2、events 3、asynchronous_metrics

【爬虫系列】Python 爬虫入门(2)

接上篇&#xff0c;继续梳理 Python 爬虫入门的知识点。这里将重点说明&#xff0c;如何识别网站反爬虫机制及应对策略&#xff0c;使用 Selenium 模拟浏览器操作等内容&#xff0c;干货满满&#xff0c;一起学习和成长吧。 1、识别反爬虫机制及应对策略 1.1 测试网站是否开启…

项目中如何配置 Maven 为国内源

目录 1. 创建出一个 Maven 项目 2. 打开项目配置界面, 检查并配置国内源 2.1 打开配置界面 (当前项目界面和新项目配置界面) 2.2 搜索 "Maven" 2.3 设置 setting.xml (给此 xml 中添加国内源) 2.4 把上面的步骤 (2.1~2.3) 在新项目的配置界面中重新配置一遍. …

【MySQL】MySQL事务隔离机制与实现原理详解(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

加权黑猩猩优化算法(WChOA)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Java实现五子棋(附源码)

文章目录一、游戏介绍二、效果展示三、代码展示1、登录页面2、算法程序3、棋盘实现四、资源下载五、文末总结一、游戏介绍 今天给大家分享一个用java写的小游戏——《五子棋》 &#xff08;完整代码可在【资源下载】目录查看&#xff09; 。五子棋是一种两人对弈的纯策略型棋类…