[LeetCode By Go 6]557. Reverse Words in a String III

题目

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: “Let’s take LeetCode contest”
Output: “s’teL ekat edoCteeL tsetnoc”

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

题目大意

给定字符串,将每个单词逐字符逆置,返回新字符串。

注意:字符串中单词之间有且只有1个空格分开。

思路

代码

reverseWords.go

package _557_Reverse_Words3

import "strings"

func ReverseWord(s string) string {
    runes := []rune(s)
    for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
        runes[from], runes[to] = runes[to], runes[from]
    }
    return string(runes)
}

func ReverseWords(s string) string {
    wordArr := strings.Split(s, " ")
    var ret string
    length := len(wordArr)
    for i := 0; i < length; i++ {
        reverseWord := ReverseWord(wordArr[i])
        if 0 == i {
            ret = ret + reverseWord
        } else {
            ret = ret + " " + reverseWord
        }

    }

    return ret
}

测试

reverseWords_test.go

package _557_Reverse_Words3

import "testing"

func TestReverseWords(t *testing.T) {
    ret := ReverseWords("Let's take LeetCode contest")
    want := "s'teL ekat edoCteeL tsetnoc"

    if ret == want {
        t.Logf("pass")
    } else {
        t.Errorf("fail, want %+v, get %+v", want, ret)
    }
}
    原文作者:miltonsun
    原文地址: https://www.jianshu.com/p/52f3cd3a4620
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞