问题

实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。

给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。

测试样例:

"A%sC%sE",7,['B','D','F']
返回:"ABCDEF"

解决方案

思路:定义一个新的字符串来接收返回的字符串,接收过程中将%s去掉即可。话不多说,上代码。

public:
    string formatString(string A, int n, vector<char> arg, int m) {
        // write code here
        string strRet;
        int index = 0;
        for(size_t i=0;i<A.size();++i)
        {
            if(A[i] == '%' && A[i+1] == 's')
            {
               strRet += arg[index++];
                i++;
            }
            else{
                strRet += A[i];
            }
        }
        for(;index<m;++index)
        {
            strRet += arg[index];
        }
        
        return strRet;
    }
};