Day 56

第557题:

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。(来自LeetCode)

1、创建一个新的字符串来存储每次反转的单词;

  从字符串头部开始遍历,当遍历完一个单词(也就是遍历到空格时),将这个单词反转然后放入创建的字符串中,加上空格,接着遍历下一个单词;

  最后得出反串字符串。  

  

第541题:

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。来源:力扣(LeetCode)

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

1、循环遍历字符串,每2*k为一段,在这一段内寻找左右两个端点,开头start和end(start+k-1);

  当到最末尾时如果大于end就定为length-1,然后将范围内字符反转,最后得出结果。

  

第917题:

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。(来自LeetCode)

 

1、利用双指针分别从左右两端开始遍历,当两者都为字母时交换,当某个指针指向的不为字母则移动;

  这样遍历到最后得出反转结果。

  

2、或者利用栈将字符串内所以时字母的字符入栈,然后遍历s字符串,如果遍历到的是字母,就将栈顶字母出栈,加入新字符串中;

  如果遍历到的不为字母,就将这个不为字母的元素加入新字符串,因为出栈队列为逆序,所以这样得到的为之反转字母的字符串。

  

 

posted @ 2020-08-30 23:40  Liang-Yi  阅读(138)  评论(0编辑  收藏  举报