zoukankan      html  css  js  c++  java
  • LeetCode 1455. 检查单词是否为句中其他单词的前缀 双指针

    地址 https://www.acwing.com/solution/LeetCode/content/13604/

    题目描述
    给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。
    
    请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
    
    如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。
    如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。
    如果 searchWord 不是任何单词的前缀,则返回 -1 。
    字符串 S 的 「前缀」是 S 的任何前导连续子字符串。
    
    
    
    示例 1:
    
    输入:sentence = "i love eating burger", searchWord = "burg"
    输出:4
    解释:"burg""burger" 的前缀,而 "burger" 是句子中第 4 个单词。
    示例 2:
    
    输入:sentence = "this problem is an easy problem", searchWord = "pro"
    输出:2
    解释:"pro""problem" 的前缀,而 "problem" 是句子中第 2 个也是第 6 个单词,但是应该返回最小下标 2 。
    示例 3:
    
    输入:sentence = "i am tired", searchWord = "you"
    输出:-1
    解释:"you" 不是句子中任何单词的前缀。
    示例 4:
    
    输入:sentence = "i use triple pillow", searchWord = "pill"
    输出:4
    示例 5:
    
    输入:sentence = "hello from the other side", searchWord = "they"
    输出:-1
    
    
    提示:
    
    1 <= sentence.length <= 100
    1 <= searchWord.length <= 10
    sentence 由小写英文字母和空格组成。
    searchWord 由小写英文字母组成。
    前缀就是紧密附着于词根的语素,中间不能插入其它成分,并且它的位置是固定的——-位于词根之前。(引用自 前缀_百度百科)

    算法1
    中规中矩吧 主要代码都是双指针切分单词

    代码

    class Solution {
    public:
    
        bool Check(string s, string checks)
    {
        if (s.size() < checks.size()) return false;
    
        for (int i = 0; i < checks.size(); i++) {
            if (s[i] != checks[i]) return false;
        }
    
        return true;
    }
    
    int isPrefixOfWord(string sentence, string searchWord) {
        int l = 0; int r = 0; int searchidx = 1;
        while (l < sentence.size() && r < sentence.size()) {
            while (sentence[l] == ' ') l++;
            r = l + 1;
            while (r < sentence.size() && sentence[r] != ' ') r++;
    
            string ele = sentence.substr(l, r - l + 1);
            l = r + 1;
            if (Check(ele, searchWord)) {
                //cout << searchidx << endl;
                return  searchidx;
            }
            searchidx++;
        }
    
        return -1;
    }
    
    
    };
    

      

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    poj 3126 Prime Path
    poj 2255 Tree Recovery
    spoj 7259 LITE
    poj 1742 Coins
    poj 1915 Knight Moves
    poj 2352 Stars
    【祝贺】gooogleman嵌入式开发板联盟图标设计完成,Let me Show!
    【讨论】TE6410/OK6410 开发板dnw c0008000是什么意思, ?
    【讨论】为什么我的300W摄像头偶尔会拍照不成功?
    【探讨】关于2440 触摸屏驱动的怪异现象分析
  • 原文地址:https://www.cnblogs.com/itdef/p/12950666.html
Copyright © 2011-2022 走看看