leetcode算法入门系列学习四『 反转字符串 | 反转字符串中单词』

【=翻转字符串=】

题目描述

传送门

解题思路

思路一:【排除】将数组组装成字符串,翻转字符串,最后将字符串在分隔成数组即可。理论上是完全可行。
但是!!! 但是!!! 但是!!!
leetcode的测试用例中包含了所有你能想到的字符,从而导致无法通过(如PHP对应图)
思路二:双指针,分别指向首、尾字符,在交换其位置即可。

解题方法

PHP

// 思路一(错误)
function reverseString(&$s) {
    
    
   $s = explode(",", strrev(implode(",", $s)));
   return $s;
}


// 思路二
function reverseString(&$s) {
    
    
   $left = 0;
   $right = count($s)-1;
   while($left < $right) {
    
    
       $tmp = $s[$right];
       $s[$right] = $s[$left];
       $s[$left] = $tmp;
       $left++;
       $right--;
   }
   return $s;
}

在这里插入图片描述在这里插入图片描述 - GO

func reverseString(s []byte) []byte  {
    
    
    var left, right = 0, len(s)-1
	for left < right {
    
    
		temp := s[right]
		s[right] = s[left]
		s[left] = temp
		left++
		right--
	}
	return s
}

在这里插入图片描述

【=反转字符串中的单词=】

题目描述

传送门

解题思路

思路:依据字符串中空格作为分隔符,将字符串分隔为数组,对其每个元素进行字符串反转,最后再将其组装成字符串

解题方法

  • PHP
function reverseWords($s) {
    
    
    $new = explode(" ", $s);
    foreach($new as $k =>$v) {
    
    
        $new[$k] = strrev($v);
    }
    return implode(" ", $new);
}

在这里插入图片描述

  • GO
// 思路一
// 指针f找到空格
// 双指针反转单词
func reverseWords(s string) string {
    
    
   var news = []rune(s)
   f := 0
   for f<len(news) {
    
    
       l := f
       for f < len(news) && news[f] != ' ' {
    
    
           f++
       }
       r := f-1
       for l<r{
    
    
           news[l],news[r] = news[r], news[l]
           l++
           r--
       }
       f++
   }
   return string(news)
}

// 思路二
// 遍历字符串,遇到空格就停止
// 双指针反转单词
func reverseWords(s string) string {
    
    
   var news = []rune(s)
   l:= 0
   for k,v :=range news{
    
    
       if v == ' ' || k == len(news)-1 {
    
    
           r := k-1
           if(k==len(news)-1) {
    
    
               r = k
           }
           for l < r {
    
    
               news[l], news[r] = news[r], news[l]
               l++
               r--
           }
           l = k+1
       }
   }
   return string(news)
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/glx490676405/article/details/120750056
今日推荐