C++实现LeetCode(205.同构字符串)

作者:Grandyang 时间:2023-06-21 04:06:54 

[LeetCode] 205. Isomorphic Strings  同构字符串

Given two strings s and t, determine if they are isomorphic.

Two strings are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

Example 1:

Input: s = "egg", t = "add"
Output: true

Example 2:

Input: s = "foo", t = "bar" Output: false

Example 3:

Input: s = "paper", t = "title"
Output: true

Note:
You may assume both and have the same length.

这道题让我们求同构字符串,就是说原字符串中的每个字符可由另外一个字符替代,可以被其本身替代,相同的字符一定要被同一个字符替代,且一个字符不能被多个字符替代,即不能出现一对多的映射。根据一对一映射的特点,需要用两个 HashMap 分别来记录原字符串和目标字符串中字符出现情况,由于 ASCII 码只有 256 个字符,所以可以用一个 256 大小的数组来代替 HashMap,并初始化为0,遍历原字符串,分别从源字符串和目标字符串取出一个字符,然后分别在两个数组中查找其值,若不相等,则返回 false,若相等,将其值更新为 i + 1,因为默认的值是0,所以更新值为 i + 1,这样当 i=0 时,则映射为1,如果不加1的话,那么就无法区分是否更新了,代码如下:


class Solution {
public:
   bool isIsomorphic(string s, string t) {
       int m1[256] = {0}, m2[256] = {0}, n = s.size();
       for (int i = 0; i < n; ++i) {
           if (m1[s[i]] != m2[t[i]]) return false;
           m1[s[i]] = i + 1;
           m2[t[i]] = i + 1;
       }
       return true;
   }
};

来源:https://www.cnblogs.com/grandyang/p/4465779.html

标签:C++,同构字符串,LeetCode
0
投稿

猜你喜欢

  • 详解Android(共享元素)转场动画开发实践

    2021-09-28 21:33:41
  • JPA中EntityListeners注解的使用详解

    2023-08-04 21:39:18
  • Java实现登录和注册案例

    2022-02-27 04:57:46
  • Springboot JPA 枚举Enum类型存入到数据库的操作

    2023-11-25 16:11:40
  • C#中实现Fluent Interface的三种方法

    2023-10-04 18:31:03
  • SpringCloud微服务架构实战之微服务治理功能的实现

    2023-07-20 09:06:38
  • mybatis中insert主键ID获取和多参数传递的示例代码

    2023-09-20 07:11:00
  • Android Loop机制中Looper与handler详细分析

    2023-01-13 04:40:56
  • Java文件操作实例详解

    2023-11-25 10:29:40
  • Java 8 Stream操作类型及peek示例解析

    2021-07-17 20:42:08
  • C#递归实现显示文件夹及所有文件并计算其大小的方法

    2023-09-13 01:56:01
  • Nginx启用压缩及开启gzip 压缩的方法

    2021-09-20 21:19:25
  • 听说用了YYYY-MM-dd的程序员,前些天都在加班改Bug

    2023-07-05 17:48:00
  • Android实现简易秒表功能

    2021-08-29 11:06:58
  • Java语法中Lambda表达式无法抛出异常的解决

    2022-10-13 01:04:43
  • Android rom解包打包工具

    2023-09-01 21:49:10
  • C#的TimeSpan案例详解

    2023-11-20 11:34:52
  • Java实现HDFS文件上传下载

    2022-05-18 15:08:06
  • C# Redis学习系列(二)Redis基本设置

    2022-11-16 13:23:22
  • Java如何重写object类的equals方法详解

    2023-09-01 15:54:57
  • asp之家 软件编程 m.aspxhome.com