首页 > 试题广场 >

字符串替换

[编程题]字符串替换
  • 热度指数:29607 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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

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


示例1

输入

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

输出

"ABCDEF"
classStringFormat:
    defformatString(self, A, n, arg, m):
        foriinarg:
            ifA.find('%s') !=-1:
                A=A.replace('%s',i,1)
            else:
                A+=i
        returnA
发表于 2022-03-16 15:42:01 回复(0)

classStringFormat:
    defformatString(self, A, n, arg, m):
        foriinarg:
            ifA.find('%s') !=-1:
                A=A.replace('%s',i,1)
            else:
                A+=i
        returnA
发表于 2021-09-22 07:53:17 回复(0)
class StringFormat:
    def formatString(self, A, n, arg, m):
        arg=list(arg)
        A=list(A)
        total=A.count('s')
        for i in range(total):
            index=A.index('%')
            A[index]=arg[i]
            A.remove('s')
        A.extend(arg[total:])
        return ''.join(A)
发表于 2019-03-07 16:26:09 回复(0)
class StringFormat:
    def formatString(self, A, n, arg, m):
        for i in arg:
            if A.find('%s') != -1:
                A = A.replace('%s',i,1)
            else:
                A += i
        return A
编辑于 2018-10-20 00:14:40 回复(3)
# -*- coding:utf-8 -*-
class StringFormat:
    def formatString(self, A, n, arg, m):
        B,i,j='',0,0
        while i<n:
            if A[i]=='%' and A[i+1]=='s':#遇到占位符时,A的下标前进两位,B的下标前进一位
                B=B+arg[j]
                i+=2
                j+=1
            else:#不是占位符则A的下标前进一位
                B=B+A[i]
                i+=1
        if m>j:#参数列表字符数大于占位符个数,则将剩下的参数字符添加到字符串的结尾
            B=B+''.join(i for i in arg[j:])
        return B

发表于 2018-08-01 10:29:15 回复(0)
感觉有必要以后处理字符串的题用python去写。。
发表于 2017-11-06 16:41:28 回复(0)

python3行解法如下:

class StringFormat:
    def formatString(self, A, n, arg, m):
        while "%s" in A and len(arg)>0:
            A=A.replace("%s",arg.pop(0),1)
        return A+"".join(arg)
发表于 2017-09-12 14:00:20 回复(4)
class StringFormat:
    def formatString(self, A, n, arg, m):
        # write code here
        a = A.count('%s')
        if a < m:
            arg_head = tuple(arg[:-(m - a)])
            arg_tail = arg[-(m - a):]
            current = A % arg_head + ''.join(arg_tail)
            return current
       	else:
            return A % tuple(arg)           

发表于 2017-01-02 11:13:25 回复(0)