当前位置:实例文章 » 其他实例» [文章]剑指Offer 05 替换空格-每日一题

剑指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进行替换。代码注释详细解释了每个步骤的逻辑。最后,我们提供了测试用例来验证我们的解决方案。

相关标签:算法
其他信息

其他资源

Top