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 <= 100
1 <= words[i].length <= 20
1 <= s.length <= 1000
words[i]
ands
consist 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; }