博客
关于我
1704 - 判断字符串的两半是否相似 - 模拟
阅读量:708 次
发布时间:2019-03-21

本文共 1382 字,大约阅读时间需要 4 分钟。

1223 题目描述

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

示例

示例 1:输入:"book"输出:true解释:a = "bo"b = "ok"a 中有 1 个元音,b 也有 1 个元音。所以,ab 相似。

示例 2:输入:"textbook"输出:false解释:a = "text"b = "book"a 中有 1 个元音,b 中有 2 个元音。因此,ab 不相似。

示例 3:输入:"MerryChristmas"输出:false示例 4:输入:"AbCdEfGh"输出:true

方法一 模拟统计法

思路

  • 创建一个包含所有元音字母的小写和大写数组。
  • 定义一个函数 isYuan,用于判断一个字符是否是元音字母。
  • 遍历字符串,分别统计前半部分和后半部分的元音数目。
  • 如果前半部分和后半部分的元音数目相同,返回 true,否则返回 false
  • 解题思路

  • 创建一个包含所有元音字母的字符数组。
  • 定义用于检查字符是否为元音的函数 isYuan
  • 使用计数器分别记录前半部分和后半部分的元音数目。
  • 比较两部分的元音数目,返回结果。
  • 方法实现

    package mainimport (    "bytes")func isYuan(c byte) bool {    meta := []byte{        'a', 'e', 'i', 'o', 'u',        'A', 'E', 'I', 'O', 'U',    }    for _, v := range meta {        if v == c {            return true        }    }    return false}func halvesAreAlike(s string) bool {    length := len(s)    lenHalf := length / 2    countA := 0    countB := 0    crossCount := 0    for i := 0; i < length; i++ {        if isYuan(s[i]) {            switch {            case i < lenHalf:                countA++            case i >= lenHalf:                countB++            default:                crossCount++            }        }    }    return (countA + crossCount) == (countB + crossCount)}

    其他注意事项

    • 时间复杂度:O(n)
    • 空间复杂度:O(n)
    • 联系作者(如有):随便一个名字@么么哒的联系邮箱xxx@xxx.com

    转载地址:http://uowrz.baihongyu.com/

    你可能感兴趣的文章
    PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
    查看>>
    PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
    查看>>
    PostgreSQL学习笔记:PostgreSQL vs MySQL
    查看>>
    PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
    查看>>
    PostgreSQL导入shape数据(地图工具篇.10)
    查看>>
    PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
    查看>>
    PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
    查看>>
    Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
    查看>>
    PostgreSQL忘记密码
    查看>>
    PostgreSQL数据库pg_dump命令行不输入密码的方法
    查看>>
    PostgreSQL新手入门
    查看>>
    postgresql树状结构查询示例
    查看>>
    PostgreSQL流复制参数max_wal_senders详解
    查看>>
    postgresql流复制配置
    查看>>
    PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法
    查看>>
    PostgreSQL的 initdb 源代码分析之九
    查看>>
    PostgreSQL的安装与使用指南
    查看>>
    postgresql编译安装及配置
    查看>>
    Postgresql运维常用命令_登录_权限设置_创建用户_创建数据库_创建postgis数据库_远程连接---Postgresql工作笔记009
    查看>>
    PostgreSQL远程连接配置
    查看>>