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 } };