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


    一、题目

    给你一个偶数长度的字符串 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> 采用数组确定是否存在元音

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

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

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

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

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

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

  • 相关阅读:
    【C语言】空指针&野指针学习小结
    【毕业设计】模块介绍:人体红外热释电传感器 -物联网 嵌入式 单片机
    计算机组成原理知识总结(七)外围设备
    什么叫等响曲线?有什么用?
    零基础学python之元组
    [Spring Cloud] (4)搭建Vue2与网关、微服务通信并配置跨域
    【软考】关键路径和松弛时间的定义和计算方式
    2022年最新辽宁交安安全员考试题库及答案
    HDFS 的 shell操作
    古有愚公移山,今有冤种搬家~某人含泪写完了搬家脚本~~
  • 原文地址:https://blog.csdn.net/qq_26470817/article/details/127800513