java - 源字符串可以转换为目标字符串吗?

标签 java string algorithm data-structures

是否有一系列转换步骤将给定的源字符串转换为目标字符串?

注意:每一步都可以转换一个字符(替换应该是'A'-'Z'之间的字符)并且必须转换该字符的所有出现。 示例如下。

Source: "ABA" 
Dest: "BAB" 
Output: True 
Explanation: ABA -> A**C**A -> **B**C**B** -> B**A**B 

Source: "AA" 
Dest: "BC" 
Output: False 
Explanation: AA -> BB

我认为 HashMap 有效。但是还有另一种数据结构,我不去逐个字符地比较吗?

最佳答案

你可以试试这个:

private static boolean test(String s1, String s2) {

    if(s1.length() != s2.length()) return false;

    Map<Character, Character> map = new HashMap<>();

    for (int i = 0; i < s1.length(); i++) {
        char c1 = s1.charAt(i);
        char c2 = s2.charAt(i);

        if (map.containsKey(c1)) {
            if (!map.get(c1).equals(c2)) {
                return false;
            }
        } else {
            map.put(c1, c2);
        }
    }
    return map.size() < 26;
}

关于java - 源字符串可以转换为目标字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56388540/

相关文章:

r - 两个字符串的最佳相似性距离度量

java - 将 Graphics2d 调整为 JScrollPane

java - Maven 多模块项目中的源依赖 - 无法自行编译模块

java - 将对象序列化为 XML 并追加 1 天

algorithm - 时间复杂度理论

php - 比较多个字符串的文本

java - 检查 URL 是否有效或存在于 java 中

php - 是否存在将 Unicode 文本大写的可靠方法?

string - Hive:将字符串转换为整数

c++ - 如何文件流字符串(包括空格)?