最后一个单词的长度

2018-12-28  本文已影响0人  bocsoft

给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World"
输出: 5

解决方案:

package length_of_last_word

import "strings"

//利用循环判断
func lengthOfLastWord(s string) int{
    size := len(s)
    if size == 0 {
        return 0
    }
    res  := 0
    for i := size -1; i >= 0; i--{
        if s[i] == ' '{
            if res != 0 {
                return res
            }
            continue
        }
        res++
    }
    return res
}

// 利用GO strings API
func lengthOfLastWord2(s string) int {
    if len(s) <= 0 {
        return 0
    }
    results := strings.Fields(s)
    size := len(results)
    if size <= 0{
        return 0
    }
    return len(results[size-1])
}


package length_of_last_word

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

type question struct {
    para
    ans
}

// para 是参数
type para struct {
    s string
}

// ans 是答案
type ans struct {
    one int
}

func TestLengthOfLastWord(t *testing.T) {
    ast := assert.New(t)

    qs := []question{

        question{
            para{
                "haha",
            },
            ans{
                4,
            },
        },

        question{
            para{
                "haha ",
            },
            ans{
                4,
            },
        },

        question{
            para{
                "",
            },
            ans{
                0,
            },
        },

        question{
            para{
                "Hello World",
            },
            ans{
                5,
            },
        },

        // 如需多个测试,可以复制上方元素。
    }

    for _, q := range qs {
        a, p := q.ans, q.para
        fmt.Printf("~~%v~~\n", p)

        ast.Equal(a.one, lengthOfLastWord2(p.s), "输入:%v", p)
    }
}


上一篇 下一篇

猜你喜欢

热点阅读