【题目】给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

【示例】

【解题思路】使用哈希表

因为数组就是一个简单的哈希表。定义一个数组叫做record用来记录字符串中字符出现的次数,大小为26并初始化为0;我们需要把字符映射到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII也是26个连续的数值。把字符a映射为下标0,相应的字符z映射为下标25。

先遍历字符串 s ,只需要将 s[i] - ‘a’ 所在的元素做+1 操作即可,并不需要记住字符a的ASCII,只要求出一个相对数值就可以了。再遍历字符串 t 时,对 t 中出现的字符映射哈希表索引上的数值再做-1的操作。

最后检查一下,record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。最后如果record数组所有元素都为零0,说明字符串s和t是字母异位词,return true。

【复杂度分析】时间复杂度为O(n),空间上因为定义是的一个常量大小的辅助数组,所以空间复杂度为O(1)。

【C++ 】

bool isAnagrm(string s,string t){int record[26] = {0};for(int i = 0;i < s.size();i++){record[s[i] - 'a']++;}for(int i = 0; i < t.size();i++){record[t[i] - 'a']--;}for(int i = 0; i < 26;i++){if(record[i] != 0){//说明两个字符串所含字母不一样return false;}}//record数组中所有元素都为0,则返回truereturn true;
}

【测试】

#include <iostream>
#include <string>
using namespace std;int main(){    string s = "anafram";string t = "nagaram";cout << "s = " << s << "   t = " << t << endl;cout << (isAnagrm(s,t)==true ? "true" : "false") << endl;return 0;
}

【参考】代码随想录、力扣

(十九)有效的字母异位相关推荐

  1. Python编程基础:第十九节 索引Index Operator

    第十九节 索引Index Operator 前言 实践 前言 我们在字符串学习过程中已经接触过索引的相关内容,我们在这里做一个小结,Python中的索引分为两部分,一种是从左向右,从0开始依次递增,例 ...

  2. 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令

    第十九章 Caché 命令大全 OPEN 命令 获取输入/输出操作的设备或文件的所有权. 重点 打开设备要指定延迟秒,否则将无限等待. 大纲 OPEN:pc device:(parameters):t ...

  3. 任务二十九:表单(一)单个表单项的检验

    任务二十九:表单(一)单个表单项的检验 面向人群: 初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度 ...

  4. 数据科学和人工智能技术笔记 十九、数据整理(上)

    十九.数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd# 创建示例数据帧 d ...

  5. 研究生周报(第十九周)

    研究生周报(第十九周) 学习目标 Transformer LAS CTC RNN-T Language-Model 学习时间 9.11 ~ 9.17 学习产出 Transformer Embeddin ...

  6. 【2021-07-31 更新】【梳理】简明操作系统原理 第十九章 身份认证和访问控制(docx)

    配套教材: Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Re ...

  7. 喜欢我十九年的男孩结婚了

    原文地址:http://www.pianheng.com/ 文/简书@卫好唯 夏季,周末,有晚风,有暑气. 大学室友萍子从外地回来,特地给我打电话点名要吃烤全鱼,扬言要榨干我本月的工资,我在电话里调侃 ...

  8. 【正点原子MP157连载】第十九章 OLED实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  9. Web表单的十九个最佳设计实践

    在Web设计和开发领域,创意是基础,而遵循最佳实践确保更好的可用性.功能性和易于使用更为重要.表单是用户在Web上处理事务时最讨厌的功能,因为经常看到难以理解的或者布局不清晰的表单.因此,在设计Web ...

最新文章

  1. mysql gtid 开启失败,master--1.1.3-SNAPSHOT版本,启用GTID,启动失败
  2. table相关的API
  3. redis中的hash
  4. TensorFlow学习笔记之三(神经网络的优化)
  5. 人工智能 | 元学习与图神经网络逻辑推导与理解
  6. PAT 数字分类(20)
  7. 彻底下载32位office2010
  8. 潘多拉路由器php,Padavan潘多拉固件ap模式openwrt固件应该如何设置有线AP模式
  9. 学习笔记29--Apollo车辆要求及Apollo支持的传感器
  10. 华为2019校招笔试题之处理字符串(python版)
  11. 问题解决逻辑:深度和广度谁应该优先?
  12. Gsensor的驱动流程 -- 基于IIC
  13. day01 Redis
  14. keepalived+LVS;keepalived+nginx
  15. 前端开发的流程与规范
  16. Ubuntu系统进行复制粘贴文件显示没有权限的解决办法
  17. 视频拼接剪辑怎么弄?分享三个小妙招给你们
  18. QGIS上常用底图插件上可用底图及其评价
  19. 最大值减最小值等于区间长度_数理统计第19讲(区间估计概念,枢轴量法)
  20. 计算机开始菜单打不开是什么原因,win10开始菜单打不开怎么办啊

热门文章

  1. android微信新功能,安卓微信6.6.7正式发布:三大重磅新特性
  2. 方舟服务器在线人数,Steam破2500万玩家,《方舟生存进化》仍居在线人数前十
  3. Swift 根据经纬度计算距离
  4. TV Scaler PP Rotator介绍
  5. OpenCV彩色图像像素读取与表示
  6. 有关两个图像像素一一对应相乘操作
  7. Java中间件简单介绍
  8. 求两个数组的交集和并集
  9. 四川天创速盈:在拼多多开店成了最有前途的方向
  10. 案例:Oracle报错ASM磁盘组不存在或没有mount