图解LeetCode——1704. 判断字符串的两半是否相似(难度:简单)

news2024/10/6 18:28:14

一、题目

给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。

两个字符串 相似 的前提是它们都含有相同数目的元音('a','e','i','o','u','A','E','I','O','U')。注意,s 可能同时含有大写和小写字母。

如果 a 和 b 相似,返回 true ;否则,返回 false 。

二、示例

2.1> 示例 1:

【输入】s = "book"
【输出】true
【解释】a = "bo" 且 b = "ok" 。a 中有 1 个元音,b 也有 1 个元音。所以,a 和 b 相似。

2.2> 示例 2:

【输入】s = "textbook"
【输出】false
【解释】a = "text" 且 b = "book" 。a 中有 1 个元音,b 中有 2 个元音。因此,a 和 b 不相似。注意,元音 o 在 b 中出现两次,记为 2 个。

提示:

  • 2 <= s.length <= 1000
  • s.length 是偶数
  • s 由 大写小写 字母组成

三、解题思路

根据题目描述,字符串s的长度是偶数,所以我们除2之后,得到字符串s一半的长度,肯定是个整数。那么我们需要做如下4个步骤:

步骤1】将10个 元音字符 保存到数组yy
步骤2】获取前一半 a 和后一半 b 的长度 range,即:range=s.length()/2
步骤3】同时遍历ab,a的遍历下标是i,b 的遍历下标是i+range;如果发现a中存在元音字符,则yc1加1;如果发现b中存在元音字符,则yc2加1
步骤4】遍历完毕后,如果yc1等于yc2,则返回true;否则返回false

具体操作,如下图所示:

四、代码实现

4.1> 采用数组确定是否存在元音

class Solution {
    public boolean halvesAreAlike(String s) {
        int[] yy = new int[123];
        yy['a'] = yy['e'] = yy['i'] = yy['o'] = yy['u'] = yy['A'] = yy['E'] = yy['I'] = yy['O'] = yy['U'] = 1;
        int range = s.length() / 2, yc1 = 0, yc2 = 0;
        for (int i = 0; i < range; i++) {
            if (yy[s.charAt(i)] == 1) yc1++;
            if (yy[s.charAt(i + range)] == 1) yc2++;
        }
        return yc1 == yc2;
    }
}

4.2> 采用字符串的indexOf确定是否存在元音

class Solution {
    public boolean halvesAreAlike(String s) {
        String yy = "aeiouAEIOU";
        int range = s.length() / 2, yc1 = 0, yc2 = 0;
        for (int i = 0; i < range; i++) {
            if (yy.indexOf(s.charAt(i)) != -1) yc1++;
            if (yy.indexOf(s.charAt(i + range)) != -1) yc2++;
        }
        return yc1 == yc2;
    }
}

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

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

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

相关文章

几分钟实现对恶意IP地址进行拦截,腾讯云Web防火墙实在太香了!

一、概述 在平时上网中&#xff0c;我们经常听到“xxx被拉入黑名单”、“把xxx加入白名单”&#xff0c;黑白名单成了禁止访问和允许访问的代名词&#xff0c;黑白名单是一种常见的安全机制&#xff0c;用于隔离流量&#xff0c;然后对隔离的流量采取特定操作。 黑名单代表只…

Redis高可用之持久化

一 Redis高可用 什么是高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提供正常…

Pytorch实战:基于鲸鱼WOA优化1DCNN的轴承故障诊断

目录 0.引言 1.关键点 2.WOA优化1DCNN超参数实战 2.1 数据准备 2.2 1DCNN故障诊断建模 2.3 采用WOA优化1DCNN超参数 0.引言 采用1DCNN进行轴承故障诊断建模&#xff0c;并基于鲸鱼优化算法WOA对1DCNN的超参数进行优化&#xff0c;以实现更高的精度。建立一个两层的1DCNN&a…

【Transformers】第 9 章 :处理很少或没有标签

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

[C]实现能在本地存储的简易通讯录

作者&#xff1a; 华丞臧. 专栏&#xff1a;【C语言】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 文章目录一、文件动态通讯录二、相关代码解析2.1 初始化2.2 销毁通讯录2.3 增加联系人2.4 …

NLP模型(一)——word2vec实现

文章目录1. 整体思路2. 数据处理3. 数据准备4. 创建数据管道5. 构建模型6. 模型训练7. 加载模型得到词向量8. 总结前面我介绍了word2vec算法的两种实现算法&#xff0c;Skip−gramSkip-gramSkip−gram 以及 CBOWCBOWCBOW 算法&#xff0c;我认为理解一个算法最好的方法就是复现…

stft的窗函数设计要求和方法(COLA)

在语音处理进行短时傅里叶变换的时候&#xff0c;对窗函数是有一定要求的&#xff0c;这篇文章将对这方面的问题进行简单的阐述。 一、背景描述 常用的语音处理需要进行这样处理: stft分帧会对信号产生截断&#xff0c;为尽可能避免这种影响&#xff0c;应考虑考虑加合适的窗 …

互融云借条APP系统开发 六大系统优势全面保障

借条是指借个人或公家的现金或物品时写给对方的条子。它是一种凭证性文书&#xff0c;通常用于日常生活以及商业管理方面。借条的本质就是借款合同&#xff0c;只不过形式比较简单&#xff0c;那么电子借条也就是简单的电子借款合同。与传统的纸质合同相比&#xff0c;电子借条…

目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

目录 &#xff08;一&#xff09;前言介绍 1.摘要 2.不同注意力步骤比较 &#xff08;二&#xff09;相关实验 &#xff08;三&#xff09;YOLOv5结合无参注意力SimAM 1.配置.yaml文件 2.配置common.py 3.修改yolo.py SimAM&#xff1a;无参数Attention助力分类/检测/分…

想带着学生做一个操作系统,可行性有多大?

有知乎网友提问如下: 想带着学生做一个操作系统&#xff0c;可行性有多大&#xff1f; 个人觉得可行性非常大&#xff0c;如果只是做着来玩&#xff0c;让学生了解操作系统时如何实现的话。但是&#xff0c;如果你打算今后商业化的话&#xff0c;那就另当别论了。就算你能做出来…

单片机实验——水塔自动抽水系统设计(基于Proteus仿真)

实验内容及要求 自来水供水是现代生活的一大特点&#xff0c;水塔作为储水装置是自来水系统必不可少的重要设施&#xff0c;让水塔保持一定的水量是自来水不断供的必要条件&#xff0c;本设计模拟自来水系统中水塔的自动抽水机制&#xff0c;设计分为控制系统和虚拟水塔两部分…

若依管理框架-漏洞复现

文章目录 0x00 介绍0x01 默认口令漏洞0x02 SQL注入0x03 Shiro反序列化漏洞0x04 任意文件读取/下载0x05 定时任务0x06 `swagger-ui.html`接口文档泄漏0x07 Druid未授权访问摘抄免责声明0x00 介绍 RuoYi 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apa…

黑产工具情报的分析方式浅析

接下来我们以恶意爬虫、抢券工具和注册机三种工具来谈一下黑产工具情报的分析方式。 对于企业方面来说&#xff0c;黑产工具情报可以有效的提高业务安全的攻防效率。通过分析工具利用的业务接口&#xff0c;不仅可以将黑产作恶行为进行有效的追踪&#xff0c;对其进行有效的处…

Java本地搭建宝塔部署实战springboot自动化立体智慧仓库WMS源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的springboot自动化立体智慧仓库WMS源码。 技术架构 技术框架&#xff1a;SpringBoot layui HTML CSS JS运行环境&#xff1a;jdk8 IntelliJ IDEA maven3 宝塔面板 本地搭建教…

MongoDB入门与实战-第四章-SpringBoot集成MongoDB

目录参考MongoDB 连接java客户端方式引入驱动依赖测试创建客户端创建集合查询文档查询集合大小条件查询排序投影聚合查询复合聚合插入文档批量插入更新文档删除文档SpringDataMongoDB添加依赖配置文件新建实体映射插入文档修改文档删除参考 SpringBoot 整合 MongoDB 实战解说 …

[附源码]java毕业设计濒危物种科普系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

jq获取和设置偏移量:offset()、position()

jq获取和设置偏移量&#xff1a; js获取盒子的偏移量是&#xff1a;offsetLeft、offsetTop&#xff1b;jq获取盒子的偏移量的方法&#xff1a;offset&#xff08;&#xff09;、position&#xff08;&#xff09;&#xff1b;offset&#xff08;&#xff09;&#xff1a;距离文…

去除有重复的行

【问题】 I have a csv file and I have duplicate as well as unique data getting add to it on a daily basis. This involves too many duplicates. I have to remove the duplicates based on specific columns. For eg: csvfile1: title1 title2 title3 title4 title5…

C++程序开启大地址(虚拟内存),让32位程序使用4G内存的方,虚拟内存概念及寻址范围详解

如何让 32 位程序突破 2G 内存限制 一般情况下&#xff0c;32 位程序的内存大小被限制在了 2G&#xff0c;不过可以通过以下的操作来突破这个限制。 修改操作系统参数 这一步骤只针对 32 位操作系统&#xff0c;64 位操作系统可以跳过 用管理员权限打开一个命令行窗口 执行…

【数据库原理及应用】——安全性与完整性(学习笔记)

&#x1f4d6; 前言&#xff1a;随着计算机的普及&#xff0c;数据库的使用也越来越广泛。为了适应和满足数据共享的环境和要求&#xff0c;DBMS要对数据库进行保护&#xff0c;保证整个系统的正常运转&#xff0c;防止数据意外丢失、被窃取和不一致数据产生&#xff0c;以及当…