博客
关于我
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 InnoDB存储引擎中的checkpoint技术
    查看>>
    Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
    查看>>
    MySQL InnoDB引擎的锁机制详解
    查看>>
    Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
    查看>>
    mysql InnoDB数据存储引擎 的B+树索引原理
    查看>>
    mysql innodb通过使用mvcc来实现可重复读
    查看>>
    mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
    查看>>
    mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
    查看>>
    Mysql join原理
    查看>>
    MySQL Join算法与调优白皮书(二)
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    mysql replace用法
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>