链表、队列、栈和字符串的相关应用(四)字符串的替换

知识点:字符串

题目:

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

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

测试样例:
"A%sC%sE",7,['B','D','F']
返回:"ABCDEF"
思路:查询“%s”,用参数字符replace掉,如果参数字符还有剩余,push_back加入后续的字符即可。
代码:
 
 
class StringFormat {
public:
    string formatString(string A, int n, vector<char> arg, int m) {
        // write code here
        int i = 0;
        int pos = A.find("%s");
        while(pos != string :: npos) 
            //npos 是一个常数,用来表示不存在的位置,常和find一起用
        {
            //string &replace(int p0, int n0,int n, char c);
            //删除p0开始的n0个字符,然后在p0处插入n个字符c
            A.replace(pos,2,1,arg[i++]);
            pos = A.find("%s", pos+1);
        }
        while(i < m)
            A.push_back(arg[i++]);
        return A;
    }
};


猜你喜欢

转载自blog.csdn.net/haikuotiankong7/article/details/78674026