Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/1961.html
1961. Check If String Is a Prefix of Array
Level
Easy
Description
Given a string s and an array of strings words, determine whether s is a prefix string of words.
A string s is a prefix string of words if s can be made by concatenating the first k strings in words for some positive k no larger than words.length.
Return true if s is a prefix string of words, or false otherwise.
Example 1:
Input: s = “iloveleetcode”, words = [“i”,”love”,”leetcode”,”apples”]
Output: true
Explanation: s can be made by concatenating “i”, “love”, and “leetcode” together.
Example 2:
Input: s = “iloveleetcode”, words = [“apples”,”i”,”love”,”leetcode”]
Output: false
Explanation:
It is impossible to make s using a prefix of arr.
Constraints:
1 <= words.length <= 1001 <= words[i].length <= 201 <= s.length <= 1000words[i]andsconsist of only lowercase English letters.
Solution
Loop over s and words. If the characters do not match, return false. If s finishes but the last character of s is not the last character of any of the word in words, return false. If s finishes at the last character of any of the word in words, return true.
-
class Solution { public boolean isPrefixString(String s, String[] words) { int length = s.length(); int arrLength = words.length; int index = 0; for (int i = 0; i < arrLength && index < length; i++) { String word = words[i]; int wordLength = word.length(); int j = 0; while (j < wordLength && index < length) { if (s.charAt(index) == word.charAt(j)) { index++; j++; } else return false; } if (index == length && j < wordLength) return false; } return index == length; } } ############ class Solution { public boolean isPrefixString(String s, String[] words) { StringBuilder t = new StringBuilder(); for (String w : words) { t.append(w); if (s.length() == t.length()) { return s.equals(t.toString()); } } return false; } } -
class Solution: def isPrefixString(self, s: str, words: List[str]) -> bool: t = 0 for i, w in enumerate(words): t += len(w) if len(s) == t: return ''.join(words[: i + 1]) == s return False ############ # 1961. Check If String Is a Prefix of Array # https://leetcode.com/problems/check-if-string-is-a-prefix-of-array/ class Solution: def isPrefixString(self, s: str, words: List[str]) -> bool: ss = "" n = 0 for word in words: n += len(word) ss += word if s[:n] != ss: ss = ss[:n - len(word)] return ss == s return ss == s -
class Solution { public: bool isPrefixString(string s, vector<string>& words) { string t = ""; for (string& w : words) { t += w; if (t.size() == s.size()) return t == s; } return false; } }; -
func isPrefixString(s string, words []string) bool { t := "" for _, w := range words { t += w if t == s { return true } } return false } -
function isPrefixString(s: string, words: string[]): boolean { const t: string[] = []; const n = s.length; let m = 0; for (const w of words) { m += w.length; if (m > n) { return false; } t.push(w); if (m === n) { return s === t.join(''); } } return false; }