题目:
请实现一个算法,确定一个字符串的所有字符【是否全都不同】。这里我们要求【不允许使用额外的存储结构】。给定一个string,请返回一个bool值,true代表所有字符全都不同,false代表存在相同的字符。保证字符串中的字符为【ASCII字符】。字符串的长度小于等于【3000】。

代码实现:

package main

import (
"fmt"
"strings"
)

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
}

func main() {
s1 := "aeiou"
fmt.Println(isUniqueStr(s1))

s2 := "BarackObama"
fmt.Println(isUniqueStr(s2))
}

运行结果:

true

false

题目:
请实现一个算法,在不使用【额外数据结构和储存空间】的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。

代码实现:

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

最新文章

  1. Sql Server中查询今天、昨天、本周、上周、本月、上月数据
  2. Django分析之三级下拉菜单选择省/市/县
  3. SQL*Loader之CASE2
  4. LED notification in Android device
  5. 如何查看设备的 UDID
  6. php--分享插件
  7. html中出现的script失效
  8. 【LeetCode 207】Course Schedule
  9. Java 程序员在写 SQL 时常犯的 10 个错误
  10. 强大DevExpress,Winform LookUpEdit 实现多列查询 gridview弹出下拉选择 z
  11. Big Event in HDU(01背包)
  12. Android(java)学习笔记230:服务(service)之绑定服务的细节
  13. 如何获取url中文件的后缀名
  14. Xshell提示缺失mfc110.dll
  15. Centos网口流量实时监控
  16. 自己手写一个SpringMVC 框架
  17. 数据分析之Pandas
  18. Linux初级入门(第一次作业)
  19. 数组式访问-ArrayAccess
  20. JavaScript之关闭轮询定时器(setTimeout/clearTimeout|setInterval/clearInterval)小结

热门文章

  1. cx_oracle 安装和配置
  2. Java第四次作业--面向对象高级特性(继承和多态)
  3. fusionjs 学习二 核心概念
  4. hasura graphql 角色访问控制
  5. pthread信号
  6. Java多线程编程核心技术,第五章
  7. 判断网络类(获取mac) InternetCheck
  8. 【python】常用的日期和时间操作
  9. python 多态、多继承、函数重写、迭代器
  10. jsp获取请求头信息