剑指Offer 05 替换空格-每日一题
发布人:shili8
发布时间:2024-11-18 00:00
阅读次数:0
**剑指Offer05 替换空格**
### 题目描述请实现一个函数用来判断字符串是否为有效的回文式。回文是从头到尾,读着一模一样的字符串。
例如 "racecar" 是回文,但 "hello" 不是。
### 解决方案#### 方法1:使用双指针法
def replaceSpace(s): """ 替换空格,返回一个新的回文式字符串。 Args: s (str): 输入的原始字符串 Returns: str: 替换空格后的新字符串 """ # 将输入的字符串转为列表,以便于后续操作 s = list(s) # 初始化两个指针,一个从头开始,一个从尾开始 i, j =0, len(s) -1 # 遍历整个字符串,直到中间的空格位置 while i < j: # 如果当前位置是空格,则将其替换为“%20” if s[i] == ' ': s[i] = '%' s.insert(i +1, '2') s.insert(i +2, '0') i +=3 # 如果当前位置不是空格,则直接移动指针 else: i +=1 # 将列表转为字符串,返回结果 return ''.join(s)
#### 方法2:使用StringBuilder
javapublic class Solution { public String replaceSpace(String s) { // 使用StringBuilder进行替换 StringBuilder sb = new StringBuilder(); for (char c : s.toCharArray()) { if (c == ' ') { sb.append("%20"); } else { sb.append(c); } } return sb.toString(); } }
###代码注释* 在方法1中,我们使用双指针法遍历整个字符串,直到中间的空格位置。
* 当遇到空格时,我们将其替换为“%20”,并移动两个指针。
* 最后,将列表转为字符串,并返回结果。
* 在方法2中,我们使用StringBuilder进行替换,直接将字符追加到StringBuilder中。
###代码示例
# 测试用例1s = "Hello World" print(replaceSpace(s)) # 输出:"Hello%20World" # 测试用例2s = "racecar" print(replaceSpace(s)) # 输出:"racecar" # 测试用例3s = "" print(replaceSpace(s)) # 输出:""
### 总结本题目要求实现一个函数来替换空格,并返回一个新的回文式字符串。我们提供了两种方法,分别使用双指针法和StringBuilder进行替换。代码注释详细解释了每个步骤的逻辑。最后,我们提供了测试用例来验证我们的解决方案。