📌  相关文章
📜  检查是否可以通过增加前缀使两个字符串相等(1)

📅  最后修改于: 2023-12-03 15:10:54.538000             🧑  作者: Mango

检查是否可以通过增加前缀使两个字符串相等

在编程中,有时候需要检查两个字符串是否可以通过在前面添加几个字符使它们相等。这个问题可以用字符串匹配的方法来解决。

以下是一个简单的算法:

  1. 将两个字符串s1和s2分别存储为字符数组。
  2. 如果s1的长度大于s2,则交换它们。
  3. 从s1的末尾向前遍历。
  4. 检查当前字符是否等于s2中相应位置的字符。
  5. 如果不相等,则返回false。
  6. 如果s1被遍历完了,返回true。

以下是一个示例Java代码实现:

public static boolean canBeEqual(String s1, String s2) {
    char[] arr1 = s1.toCharArray();
    char[] arr2 = s2.toCharArray();
    
    // 确保arr1是较短的字符串
    if (arr1.length > arr2.length) {
        char[] temp = arr1;
        arr1 = arr2;
        arr2 = temp;
    }
    
    int i = arr1.length - 1;
    int j = arr2.length - 1;
    
    while (i >= 0) {
        if (arr1[i] != arr2[j]) {
            return false;
        }
        i--;
        j--;
    }
    
    return true;
}

以上代码中,toCharArray()方法使用来将字符串转化为字符数组,arr1arr2分别代表两个字符串。然后检查哪一个字符串更短,将较短的字符数组存储到arr1数组中。接着进行遍历,并比较两个字符数组中对应位置的字符是否相等。如果都相等,则返回true,否则返回false

上面的算法具有线性时间复杂度O(n),其中n是给定字符串的长度。