C++题目练习第七天__ 检查字符串是否为数组前缀

 题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

 题目:

给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。

字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 kk 为 正数 )个字符串按顺序相连得到,且 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;
    }
};


力扣通过:

 



ending... 

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值