【力扣刷题】205.同构字符串(哈希表)

题目:

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

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例1:

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

输出:true

示例2:

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

输出:false

示例3:

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

输出:true

提示:

  • 1 <= s.length <= 5 * 104
  • t.length == s.length
  • s 和 t 由任意有效的 ASCII 字符组成

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

 (自解)方法一:遍历s字符串,记录每个字符映射在t字符串中的对应字符,遇到已经记录的字符,判断t中对应下标的字符与记录的是否一致。注意:需要判断两次映射

(学习)方法二:利用string类型的indexof()和charAt()函数

代码1:

class Solution {
public:
    bool isIsom(string& s,string& t) //一次映射判断
    {
        vectorv(128,-1); //用数组记录s字符串映射到t字符串的值
        for(int i=0;i

代码2:

class Solution {
    public boolean isIsomorphic(String s, String t) {
          for(int i = 0; i < s.length(); i++){
//s.charAt(i) :s字符串中下标为i的字符
//s.indexOf():返回指定字符在s字符串中第一次出现的索引
              if(s.indexOf(s.charAt(i)) != t.indexOf(t.charAt(i))){
                  return false;
              }
          }  
          return true;
    }
}

 

你可能感兴趣的:(leetcode,c++)