LintCode 3208:String splitting字符串处理入门题

3208 · String splitting
C++
Easy

This topic is a pre-release topic. If you encounter any problems, please contact us via “Problem Correction”, and we will upgrade your account to VIP as a thank you.
Description
This question requires you to complete the function splitString in the file Solution.cpp.

This function takes two arguments.

A string s as the original string to be split.
A non-empty string t is used as a splitting basis.
All the split substrings in order are formed into a vector and returned using the return statement.

The evaluation machine runs main.cpp to call the splitString function in Soluction.cpp by importing a custom function library, and parses the contents of the returned string vector.

There is no need to use the cin statement or the cout statement for this problem.
The input data is stored in the arguments of the function, and the output data is returned using the return statement.
Example
Input Sample 1:

asdf,Hello,ok
,
Output sample 1:

[“asdf”, “Hello”, “ok”]
All commas , of the original string are removed and the string is separated from the comma position.

Input Sample 2:

,
Output sample 2:

[]
The original string is empty, so an empty vector container is returned.

解法1:

/**
 * @param s: A string
 * @param t: A string
 * @return: A vector of sub strings
 */
vector<string> splitString(string &s, string &t) {
    vector<string> res;
    string s2(s);
    while (s2.size() > 0) {
        int pos = s2.find(t);
        if (pos == -1) {
            res.push_back(s2);
            break;
        }
        res.push_back(s2.substr(0, pos));
        s2 = s2.substr(pos + 1);
    }
    return res;
}

解法2:

/**
 * @param s: A string
 * @param t: A string
 * @return: A vector of sub strings
 */
vector<string> splitString(string &s, string &t) {
    vector<string> res;
    int start = 0, pos = 0;
    pos = s.find(t);
    while (pos != -1) {
        res.push_back(s.substr(start, pos - start));
        start = pos + 1;
        pos = s.find(t, start);
        if (pos == -1) res.push_back(s.substr(start));  
    }
    //if (pos == -1) res.push_back(s.substr(pos + 1));
    return res;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值