題目:
請實現一個算法,肯定一個字符串的全部字符【是否全都不一樣】。這裏咱們要求【不容許使用額外的存儲結構】。給定一個string,請返回一個bool值,true表明全部字符全都不一樣,false表明存在相同的字符。保證字符串中的字符爲【ASCII字符】。字符串的長度小於等於【3000】。golang
代碼實現:算法
package main數據結構
import (
"fmt"
"strings"
)code
func isUniqueStr(s string) bool {
if len([]rune(s)) > 3000 {
return false
}
for _, v := range s {
if v > 127 {
return false
}
if strings.Count(s, string(v)) > 1 {
return false
}
}
return true
}unicode
func main() {
s1 := "aeiou"
fmt.Println(isUniqueStr(s1))字符串
s2 := "BarackObama"
fmt.Println(isUniqueStr(s2))
}
運行結果:string
trueio
false
題目:
請實現一個算法,在不使用【額外數據結構和儲存空間】的狀況下,翻轉一個給定的字符串(能夠使用單個過程變量)。
給定一個string,請返回一個string,爲翻轉後的字符串。保證字符串的長度小於等於5000。import
代碼實現:變量
package main
import (
"fmt"
)
func reverString(s string) (string, bool) {
str := []rune(s)
len := len(str)
if len > 5000 {
return string(str), false
}
for i := 0; i < len/2; i++ {
str[i], str[len-1-i] = str[len-1-i], str[i]
}
return string(str), true
}
func main() {
s1 := "This is golang"
fmt.Println(reverString(s1))
s2 := "gnalog si sihT"
fmt.Println(reverString(s2))
}
運行結果:
gnalog si sihT true
This is golang true
題目:
給定兩個字符串,請編寫程序,肯定其中一個字符串的字符從新排列後,可否變成另外一個字符串。這裏規定【大小寫爲不一樣字符】,且考慮字符串重點空格。給定一個string s1和一個string s2,請返回一個bool,表明兩串是否從新排列後可相同。保證兩串的長度都小於等於5000。
代碼實現:
package main
import (
"fmt"
"strings"
)
func isRegroup(s1, s2 string) bool {
if len([]rune(s1)) != len([]rune(s2)) {
return false
}
for _, v := range s1 {
if strings.Count(s1, string(v)) != strings.Count(s2, string(v)) {
return false
}
}
return true
}
func main() {
s1 := "This is golang"
s2 := "gnalog si sihT"
fmt.Println(isRegroup(s1, s2))
s3 := "Here you are"
s4 := "Are you here"
fmt.Println(isRegroup(s3, s4))
s5 := "This is golang1.1"
s6 := "This is golang1"
fmt.Println(isRegroup(s5, s6))
}
運行結果:
true
false
false
題目:
請編寫一個方法,將字符串中的空格所有替換爲「%20」。假定該字符串有足夠的空間存放新增的字符,而且知道字符串的真實長度(小於等於1000),同時保證字符串由【大小寫的英文字母組成】。給定一個string爲原始的串,返回替換後的string。
代碼實現:
package main
import (
"fmt"
"strings"
"unicode"
)
func replaceBlank(s string) (string, bool) {
if len([]rune(s)) > 1000 {
return s, false
}
for _, v := range s {
if string(v) != " " && unicode.IsLetter(v) == false {
return s, false
}
}
return strings.Replace(s, " ", "%20", -1), true
}
func main() {
s1 := "Hello World"
fmt.Println(replaceBlank(s1))
s2 := "Hello,World"
fmt.Println(replaceBlank(s2))
}
運行結果:
Hello%20World true
Hello,World false