All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1801_1900.s1813_sentence_similarity_iii.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g1801_1900.s1813_sentence_similarity_iii;

// #Medium #Array #String #Two_Pointers #2022_05_04_Time_3_ms_(41.38%)_Space_42.8_MB_(10.34%)

/**
 * 1813 - Sentence Similarity III\.
 *
 * Medium
 *
 * A sentence is a list of words that are separated by a single space with no leading or trailing spaces. For example, `"Hello World"`, `"HELLO"`, `"hello world hello world"` are all sentences. Words consist of **only** uppercase and lowercase English letters.
 *
 * Two sentences `sentence1` and `sentence2` are **similar** if it is possible to insert an arbitrary sentence **(possibly empty)** inside one of these sentences such that the two sentences become equal. For example, `sentence1 = "Hello my name is Jane"` and `sentence2 = "Hello Jane"` can be made equal by inserting `"my name is"` between `"Hello"` and `"Jane"` in `sentence2`.
 *
 * Given two sentences `sentence1` and `sentence2`, return `true` _if_ `sentence1` _and_ `sentence2` _are similar._ Otherwise, return `false`.
 *
 * **Example 1:**
 *
 * **Input:** sentence1 = "My name is Haley", sentence2 = "My Haley"
 *
 * **Output:** true
 *
 * **Explanation:** sentence2 can be turned to sentence1 by inserting "name is" between "My" and "Haley".
 *
 * **Example 2:**
 *
 * **Input:** sentence1 = "of", sentence2 = "A lot of words"
 *
 * **Output:** false
 *
 * **Explanation:** No single sentence can be inserted inside one of the sentences to make it equal to the other.
 *
 * **Example 3:**
 *
 * **Input:** sentence1 = "Eating right now", sentence2 = "Eating"
 *
 * **Output:** true
 *
 * **Explanation:** sentence2 can be turned to sentence1 by inserting "right now" at the end of the sentence.
 *
 * **Constraints:**
 *
 * *   `1 <= sentence1.length, sentence2.length <= 100`
 * *   `sentence1` and `sentence2` consist of lowercase and uppercase English letters and spaces.
 * *   The words in `sentence1` and `sentence2` are separated by a single space.
**/
@SuppressWarnings("java:S2234")
public class Solution {
    public boolean areSentencesSimilar(String sentence1, String sentence2) {
        String[] words1 = sentence1.split(" ");
        String[] words2 = sentence2.split(" ");
        int i = 0;
        int n1 = words1.length;
        int n2 = words2.length;
        if (n1 > n2) {
            return areSentencesSimilar(sentence2, sentence1);
        }
        while (i < n1 && words1[i].equals(words2[i])) {
            ++i;
        }
        while (i < n1 && words1[i].equals(words2[n2 - n1 + i])) {
            ++i;
        }
        return i == n1;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy