lintcode-1902 · 寻找Google
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信: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++中都是合理合规的。
所以我们主要考虑下面几种情况
-
“Google” 主要是出现在“//”之后的,说明它就是一个注释,直接返回true即可
-
“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)