题目链接:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目:
给你一个字符串 s
和一个字符串数组 words
,请你判断 s
是否为 words
的 前缀字符串 。
字符串 s
要成为 words
的 前缀字符串 ,需要满足:s
可以由 words
中的前 k
(k
为 正数 )个字符串按顺序相连得到,且 k
不超过 words.length
。
如果 s
是 words
的 前缀字符串 ,返回 true
;否则,返回 false
。
示例 1:
输入:s = "iloveleetcode", words = ["i","love","leetcode","apples"] 输出:true 解释: s 可以由 "i"、"love" 和 "leetcode" 相连得到。
示例 2:
输入:s = "iloveleetcode", words = ["apples","i","love","leetcode"] 输出:false 解释: 数组的前缀相连无法得到 s 。
提示:
1 <= words.length <= 100
1 <= words[i].length <= 20
1 <= s.length <= 1000
words[i]
和s
仅由小写英文字母组成
个人思路:
对目标(s)字符串进行长度获取 ,方便后续的长度对比判断;将所给的words数组进行一(组)段一(组)段的字符串长度以及(Sm)字符串重新组合为一个字符串,当累加到字符串的长度大于(s)目标字符串时,必不为前缀;当刚刚好长度相等时,进行目标(s)字符串和(Sm)字符串进行逐个字符比较,相等返回bool 1(true),不相等返回bool 0(false).
代码:
class Solution {
public:
bool isPrefixString(string s, vector<string>& words) {
string Sm;
int Ir=0,Isize=words.size(),Is_strlen=s.size(),Iw_sum=0,Im_strlen=0;//row行,column列
while(Ir<Isize) {
Im_strlen=words[Ir].size();
Iw_sum+=Im_strlen;
Sm+=words[Ir];
if(Iw_sum<Is_strlen)Ir++;
else return Iw_sum==Is_strlen?(bool)(s==Sm):(bool)0;
}
return (bool)0;
}
};
力扣通过: