博客
关于我
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/

    你可能感兴趣的文章
    mysql主从同步配置方法和原理
    查看>>
    mysql主从复制 master和slave配置的参数大全
    查看>>
    MySQL主从复制几个重要的启动选项
    查看>>
    MySQL主从复制及排错
    查看>>
    mysql主从复制及故障修复
    查看>>
    MySQL主从复制的原理和实践操作
    查看>>
    webpack loader配置全流程详解
    查看>>
    mysql主从复制,读写分离,半同步复制实现
    查看>>
    MySQL主从失败 错误Got fatal error 1236解决方法
    查看>>
    MySQL主从架构与读写分离实战
    查看>>
    MySQL主从篇:死磕主从复制中数据同步原理与优化
    查看>>
    mysql主从配置
    查看>>
    MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
    查看>>
    MySQL之CRUD
    查看>>
    MySQL之DML
    查看>>
    Mysql之IN 和 Exists 用法
    查看>>
    MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
    查看>>
    MySQL之SQL语句优化步骤
    查看>>
    MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
    查看>>
    Mysql之主从复制
    查看>>