zoukankan      html  css  js  c++  java
  • 20201227[java]同构字符串

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

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

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

    示例 1:

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

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

    输入: s = "paper", t = "title"
    输出: true
    说明:
    你可以假设 s 和 t 具有相同的长度。

    通过次数76,325提交次数155,254

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/isomorphic-strings
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
    public boolean isIsomorphic(String s, String t) {
    boolean flag = false;
    /*比较字符串是否相同
    s字符串不变
    用s字符串中的字符依次替代t中的字符串
    替代依次比较依次,看到最后都一直相同则是同够够的
    */
    StringBuffer sbs = new StringBuffer();
    StringBuffer sbt = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
    // 遍历第一个字符串,比较每一个字符
    char chs = s.charAt(i);
    char cht = t.charAt(i);
    boolean sexists = sbs.toString().contains(String.valueOf(chs));
    boolean texists = sbt.toString().contains(String.valueOf(cht));

    // s中当前字符第一次出现 且 t中当前字符也是第一次出现,
    // 需要记录字符并比较出现位置是否对应
    if (!sexists && !texists) {
    sbs.append(chs);
    sbt.append(cht);

    // s中当前字符不是第一次出现 且 t中当前字符也是第一次出现,说明字符不对应,返回false
    } else if (sexists && !texists) {
    return false;

    // s中当前字符是第一次出现 且 t中当前字符不是第一次出现,说明字符不对应,返回false
    } else if (!sexists && texists) {
    return false;

    // s中当前字符不是第一次出现 且 t中当前字符也不是第一次出现,说明匹配过
    // 直接比较下个字符
    } else if (sexists && texists) {
    continue;
    }

    // s中字符出现的位置,t中对应的位置字符要相同
    for (int j = i + 1; j < s.length(); j++) {
    if (s.charAt(j) == chs && t.charAt(j) != cht) {
    return false;
    }
    }
    }
    return true;
    }
    }
  • 相关阅读:
    软件工程最后一次作业
    软件工程第二次结对作业
    软件工程第三次作业
    软件工程第二次个人作业
    软件工程第二次作业
    软件工程第一次作业
    2020软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
  • 原文地址:https://www.cnblogs.com/bufuzhou/p/14199403.html
Copyright © 2011-2022 走看看