string提炼 类型
缘起:
该类型是从sring中提炼出想要的string,比如去掉空格,不合要求的字符,然后结果输出一个新的提炼后的字符串。可以用一个string vector在遍历原来string的时候,把每个比如空格之前的字符放入这个vector中,然后整理这个vector,得出想要的字符串。
步骤:
1,遍历原来string,在遍历中去掉不合法的字符。
坑点:
1,注意index不要越界,只要有while的地方,条件里一定要带着 i < size.
2, 在while里面的while结束,要判断if(i == size), 然后进行相应操作。
3,最外面的while结束后,在return前,想想是否需要额外操作处理结尾处。
题目:
53. Reverse Words in a String
421. Simplify Path
1394. Goat Latin
该类型是从sring中提炼出想要的string,比如去掉空格,不合要求的字符,然后结果输出一个新的提炼后的字符串。可以用一个string vector在遍历原来string的时候,把每个比如空格之前的字符放入这个vector中,然后整理这个vector,得出想要的字符串。
步骤:
1,遍历原来string,在遍历中去掉不合法的字符。
坑点:
1,注意index不要越界,只要有while的地方,条件里一定要带着 i < size.
2, 在while里面的while结束,要判断if(i == size), 然后进行相应操作。
3,最外面的while结束后,在return前,想想是否需要额外操作处理结尾处。
题目:
53. Reverse Words in a String
421. Simplify Path
1394. Goat Latin
string simplifyPath(string &path) {
// write your code here
// 主体就是找 / 之间的string
const int size = path.size();
if(size == 0){
return "/";
}
std::vector<string> strs;
int i = 0;
while(i < size){
while(i < size && path[i] == '/'){
i++;
}
if(i == size){
break;
}
int start = i;
while(i < size && path[i] != '/'){
i++;
}
string sub = path.substr(start, i - start);
if(sub == "."){
continue;
}
else if(sub == ".."){
if(!strs.empty()){
strs.pop_back();
}
}
else{
strs.push_back(sub);
}
}
if(strs.size() == 0){
return "/";
}
string res = "";
for(int i = 0; i < strs.size(); i++){
res += "/" + strs[i];
}
return res;
}
Comments
Post a Comment