首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >图解LeetCode——1704. 判断字符串的两半是否相似(难度:简单)

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

作者头像
爪哇缪斯
发布2023-05-10 11:54:56
发布2023-05-10 11:54:56
2400
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

一、题目

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

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

如果 ab 相似,返回 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> 采用数组确定是否存在元音

代码语言:javascript
复制
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确定是否存在元音

代码语言:javascript
复制
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;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目
  • 二、示例
    • 2.1> 示例 1:
    • 2.2> 示例 2:
    • 提示:
  • 三、解题思路
  • 四、代码实现
    • 4.1> 采用数组确定是否存在元音
    • 4.2> 采用字符串的indexOf确定是否存在元音
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档