zoukankan      html  css  js  c++  java
  • Leetcode 205. 同构字符串

    给定两个字符串 和 t,判断它们是否是同构的。

    如果 中的字符可以被替换得到 ,那么这两个字符串是同构的。

    所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

    示例 1:

    输入: s = "egg", t = "add"
    输出: true
    

    示例 2:

    输入: s = "foo", t = "bar"
    输出: false

    示例 3:

    输入: s = "paper", t = "title"
    输出: true

    说明:
    你可以假设 t 具有相同的长度。

    思路:如果你用的是JAVA的话上去就直接拍hashmap就可以解决这个问题

    但是如果你不会用则可以用数组标记,用一个变量top标记当前出现的字母是第几个

    比如 样例的"egg",e是第一个出现的,g是第二个出现的,然后你用一个数组标记这些字符是否出现过,如果出现过,则直接把把他们的顺序赋值到ans1数组内,如果没有则标记他们是第几个出现的

    这样子egg在ans1内就是122,foo也是122这样子就是同构的

    foo则是122,bar则是123

    就不是同构的

     1 int mark[1000001];
     2 int ans1[101000],ans2[010010];
     3 bool isIsomorphic(char* s, char* t)
     4 {
     5     memset(mark,0,sizeof(mark));
     6     memset(ans1,0,sizeof(ans1));
     7     memset(ans2,0,sizeof(ans2));
     8 
     9     int len1=strlen(s),len2=strlen(t);
    10     if(len1!=len2)
    11         return false;
    12 
    13     int top=1;///记录出现了几个的字符
    14     for(int i=0;i<len1;i++)
    15     {
    16         if(mark[(int)s[i]]==0)
    17         {
    18             mark[(int)s[i]]=top;///标记字符
    19             ans1[i]=mark[(int)s[i]];///赋值
    20             top++;
    21         }
    22         else {
    23 
    24             ans1[i]=mark[(int)s[i]];
    25 
    26         }
    27     }
    28     memset(mark,0,sizeof(mark));
    29     top=1;
    30     for(int i=0;i<len2;i++)
    31     {
    32         if(mark[(int)t[i]]==0)
    33         {
    34             mark[(int)t[i]]=top;
    35             ans2[i]=mark[(int)t[i]];
    36             top++;
    37         }
    38         else {
    39 
    40             ans2[i]=mark[(int)t[i]];
    41 
    42         }
    43     }
    44 
    45     int flag=0;
    46     for(int i=0;i<len1;i++)
    47         if(ans1[i]!=ans2[i])
    48             return false;
    49             
    50     return true;
    51 }
    View Code
  • 相关阅读:
    nsstring字符串重组
    nssstring 转换大小写
    NSString的截取
    SEL数据类型
    protocol(协议)的一些要点
    block数据类型
    category应用(计算nssting的数量)
    category分类
    mvc购物车项目(2)
    ArrayList中存储数组时需要注意到的问题
  • 原文地址:https://www.cnblogs.com/tijie/p/9905287.html
Copyright © 2011-2022 走看看