1. 题目
给你一个字符串
s
和一个字符串数组words
,请你判断s
是否为words
的 前缀字符串 。字符串
s
要成为words
的 前缀字符串 ,需要满足:s
可以由words
中的前k
(k
为 正数 )个字符串按顺序相连得到,且k
不超过words.length
。如果
s
是words
的 前缀字符串 ,返回true
;否则,返回false
。
2. 示例
3. 分析
法一:直接拼接数组的每个字符串比较是否与 s 相等:
cpp
class Solution {
public:
bool isPrefixString(string s, vector<string>& words) {
string str;
for(int i = 0; i < words.size(); i++)
{
for(int j = 0; j < words[i].size(); j++)
{
str += words[i][j];
}
if(str == s) return true;
}
return false;
}
};
法二:逐个字符比较是否相等即可,若有一个不同则false:
cpp
class Solution {
public:
bool isPrefixString(string s, vector<string>& words) {
int pos = 0, n = s.size();
for(int i = 0; i < words.size(); i++)
{
for(int j = 0; j < words[i].size(); j++)
{
if(pos < n && words[i][j] == s[pos]) pos++;
else return false;
}
if(pos == n) return true;
}
return false;
}
};