iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
自我挑戰組

golang leetcode 30天挑戰系列 第 21

golang leetcode 30天挑戰 21th day -toLowerCase

  • 分享至 

  • xImage
  •  

golang leetcode 30天挑戰 21th day -toLowerCase

題目解讀:

題目來源:

to-lower-case

原文:

Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.

解讀:

實做ToLowerCase這個function

把所有輸入的字串 轉成小寫的形式輸出

初步解法:

初步觀察:

每個character都是一個hex code的形式儲存
因此 只要對於每個輸入的 character檢查範圍

是否在 'A' ~ 'Z'的range之內

就知道是否 是Capitcal character

然後只要 把每個 大寫的character 加上 offset of 'a'-'A'

就可以轉換成大寫

初步設計:

Given a string s

Step 0: let a integer index = 0, a string result = ""

Step 1: if index > length of s go to step 4

Step 2: if s[index] >= 'A' and s['index'] <= Z set result += string(s[index]+'a'-'A') else set result += string(s[index])

Step 3: index = index + 1 go to step 1

Step 4: return result

my solution source code

toLowerCase.go

package to_lower_case

func toLowerCase(str string) string {
	offset := 'a' - 'A'
	result := ""
	for _, r := range str {
		if r >= 'A' && r <= 'Z' {
			result += string(r + offset)
		} else {
			result += string(r)
		}
	}
	return result
}

遇到的困難

題目上理解的問題

因為英文不是筆者母語

所以在題意解讀上 容易被英文用詞解讀給搞模糊

pseudo code撰寫

一開始不習慣把pseudo code寫下來

因此 不太容易把自己的code做解析

golang table driven test不熟

對於table driven test還不太熟析

所以對於寫test還是耗費不少時間

測資的撰寫

package to_lower_case

import "testing"

func Test_toLowerCase(t *testing.T) {
	type args struct {
		str string
	}
	tests := []struct {
		name string
		args args
		want string
	}{
		{
			name: "Example1",
			args: args{
				str: "Hello",
			},
			want: "hello",
		},
		{
			name: "Example2",
			args: args{
				str: "here",
			},
			want: "here",
		},
		{
			name: "Example3",
			args: args{
				str: "LOVELY",
			},
			want: "lovely",
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := toLowerCase(tt.args.str); got != tt.want {
				t.Errorf("toLowerCase() = %v, want %v", got, tt.want)
			}
		})
	}
}

參考文章

golang test


上一篇
golang leetcode 30天挑戰 20th day - count-good-triplets
下一篇
golang leetcode 30天挑戰 22th day cells_with_odd_values_in_a_matrix
系列文
golang leetcode 30天挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言