专题:字符串
题目:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例 1:
输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]
题目分析: 双指针i,j一个指向第一个,一个指向最后一个,然后使用swap函数交换。直到i和相遇结束。
代码实现:
题目:翻转字符串
给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
题目分析 :我们遍历s字符串时,可以一次遍历2k个然后,判断从i这个点,到后面是否还有是否还有2k个元素,如果有k个元素,就翻转i到i+k区间的元素。如果后面不够k个元素,就把后面的元素全部翻转了。
代码实现:
题目:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1: 输入:s = "We are happy."
输出:"We%20are%20happy."
题目分析: 使用双指针的方式,首先计算s字符串中有多少个空格,然后通过计算给字符串进行扩容。(size()+2*count)。此时两个指针一个指向原数组的最后一个元素。一个数组指向扩容后数组的最后一个元素,然后两个数组一起往前走,如果元素组对于元素不是空格,那么元素组给新数组赋值,如果元素组元素是空格,那么给新数组赋值’%''2''0'.直到新数组下标和旧数组下标相遇,那么说明结束了。
代码实现:
题目:翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue"
输出: "blue is sky the"
题目分析 :去掉多余的空格,然后把字符串全部整体翻转,然后子把每个单词翻转。
代码实现: