列表

详情


QR6. 字符串替换

描述

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

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


示例1

输入:

"A%sC%sE",7,[B,D,F],3

输出:

"ABCDEF"

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 420KB, 提交时间: 2021-08-31

class StringFormat{
    public:
    string formatString(string A,int n,vector<char>arg,int m){
        string c;
        int j=0;
        for(int i=0;i<n;i++)
        {
            if(A[i]=='%'&&(i+1<n)&&A[i+1]=='s')
            {c+=arg[j++];i++;}
            else c+=A[i];
        }
        while (j<m)
            c+=arg[j++];
        return c;
    }               
};

C++ 解法, 执行用时: 2ms, 内存消耗: 424KB, 提交时间: 2021-08-25

class StringFormat {
public:
    string formatString(string A, int n, vector<char> arg, int m) {
        // write code here
        char str[1010];
        int cnt = 0 , k = 0;
        for(int i=0; i<n; i++)
        {
            if(A[i] == '%')
            {
                str[cnt++] = arg[k++];
                i ++ ;
            }
            else str[cnt++] = A[i];
        }
        while(k < m)
            str[cnt++] = arg[k++];
        str[cnt] = '\0';
        string res(str);
        return res;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 460KB, 提交时间: 2021-06-30

class StringFormat {
public:
    string formatString(string A, int n, vector<char> arg, int m) {
        // write code here

         string result;
 
        int index = 0;
        for (int i = 0; i < n; i++) {
            if (A[i] == '%' && i < n - 1 && A[i + 1] == 's') {
                result += arg[index++];
                i++;
            } else {
                result += A[i];
            }
        }
        while (index < m) {
            result += arg[index++];
        }
 
        return result;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 476KB, 提交时间: 2021-05-28

class StringFormat {
public:
    string formatString(string A, int n, vector<char> arg, int m) {
        // write code here
		
        int pos = A.find_first_of("%s");
        int i = 0;
        while(pos != string::npos)
        {
            A.replace(pos,2,1,arg[i++]);
            pos = A.find_first_of("%s");
        }
        while(i<m)
            A.push_back(arg[i++]);
        return A;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 476KB, 提交时间: 2020-12-02

class StringFormat {
public:
    string formatString(string A, int n, vector<char> arg, int m) {
        string h;
        int j=0;
        for(int i=0;i<n;i++)
            {
            if(A[i]=='%'&&(i+1<n)&&A[i+1]=='s')
            {h+=arg[j++]; i++;}
            else h+=A[i];
        }
        
        while(j<m)
            h+=arg[j++];

        return h;
        // write code here
    }
};

上一题