lintcode-1902 · 寻找Google

举报
搞前端的半夏 发表于 2021/11/30 22:20:52 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述给您一个字符串形式的C ++文件(每行是一个字符串),我们希望您在注释行中找到“ Google”。如果注释行中有“ Google”,则返回true,...

大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界!

描述

给您一个字符串形式的C ++文件(每行是一个字符串),我们希望您在注释行中找到“ Google”。如果注释行中有“ Google”,则返回true,否则返回false。
C++有两种注释方式,一种是单行注释 //,代表着//后面的本行内容均为注释,另一种是多行注释,/**/ 这两者之间的部分均为注释。

**

  • 保证“Google”字符串在一个string内,不会换行

样例

输入: 
S = ["#include<bits/stdc++.h>","using namespace std;","//Google test","int main(){","return 0;","}"]
输出: 
true
输入: 
S = ["#include<bits/stdc++.h>","using namespace std;","int main(){","int Google = 0","return 0;","}"]
输出: 
false
说明: 
google不在注释行内。

题解

解题思路

根据题意,Google可能会出现在单行和多行注释内,这两种注释在C++中都是合理合规的。
所以我们主要考虑下面几种情况

  1. “Google” 主要是出现在“//”之后的,说明它就是一个注释,直接返回true即可

  2. “Google” 出现在"/ “之后与” /"之间的,说明它是一个注释,直接返回true即可

3、“Google"出现在只有”/ “而没有” /“的”/ *"之后,虽然没有后面的,也是注释,返回true

4、“Google"出现在只有”* /“而没有”/ “的” /"之前,虽然没有后面的,也是注释,返回true

5、其他情况:返回false


class Solution {
public:
    /**
     * @param S: The c++ file
     * @return: return if there is "Google" in commet line
     */
    bool FindGoogle(vector<string> &S) {
        
        //1、某行在//之后包含"Google"
        //2、某行在包含/*或以/*开头、*/结尾的之间且包含"Google"
        bool batchedAnnotation=false;
        for(int i = 0; i < S.size(); i++){
            if(S[i].find("//") != S[i].npos && S[i].find("Google")!= S[i].npos && S[i].find("//") < S[i].find("Google")){
                return true;
            }
            if(S[i].find("/*")!=S[i].npos && S[i].find("*/")!=S[i].npos){
                if(S[i].find("Google")!=S[i].npos){
                    return true;
                }
            }
            else if(S[i].find("/*")!=S[i].npos && S[i].find("*/")==S[i].npos && S[i].find("Google")!=S[i].npos && S[i].find("/*") < S[i].find("Google")){
                return true;
            }
            else if(S[i].find("/*")==S[i].npos && S[i].find("*/")!=S[i].npos && S[i].find("Google")!=S[i].npos && S[i].find("*/") > S[i].find("Google")){
                return true;
            }
        }
        return false;
    }
};
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。