设为首页 收藏本站
查看: 1365|回复: 0

[经验分享] golang面试题

[复制链接]

尚未签到

发表于 2018-9-20 12:20:23 | 显示全部楼层 |阅读模式
  题目:
  请实现一个算法,确定一个字符串的所有字符【是否全都不同】。这里我们要求【不允许使用额外的存储结构】。给定一个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, str[len-1-i] = str[len-1-i], str
  }
  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598862-1-1.html 上篇帖子: golang 标准库间依赖的可视化展示 下篇帖子: Golang项目开发管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表