经典面试题golang实现方式(一)
来源:互联网 发布:w10怎么安装软件 编辑:程序博客网 时间:2024/06/05 00:27
以下所有题目的关键信息都会用【】括起来,我们不对题目进行分析,只给出题目的解决方案;如有疑问请不吝赐教。
题目:
请实现一个算法,确定一个字符串的所有字符【是否全都不同】。这里我们要求【不允许使用额外的存储结构】。给定一个string,请返回一个bool值,true代表所有字符全都不同,false代表存在相同的字符。保证字符串中的字符为【ASCII字符】。字符串的长度小于等于【3000】。
代码实现:
package mainimport ( "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))}
运行结果:
truefalse
题目:
请实现一个算法,在不使用【额外数据结构和储存空间】的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
代码实现:
package mainimport ( "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 trueThis is golang true
题目:
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定【大小写为不同字符】,且考虑字符串重点空格。给定一个string s1和一个string s2,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。
代码实现:
package mainimport ( "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))}
运行结果:
truefalsefalse
题目:
请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由【大小写的英文字母组成】。给定一个string为原始的串,返回替换后的string。
代码实现:
package mainimport ( "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 trueHello,World false
阅读全文
0 0
- 经典面试题golang实现方式(一)
- @经典面试题(一)@
- 经典面试题(一)
- 经典的SQL面试题(一)
- 经典C/C++面试题(一)
- 经典C/C++面试题(一)
- 嵌入式C经典面试题(一)
- 经典Hibernate面试题(一)
- java经典面试题(一)
- 经典面试题-- 排序算法(一)
- C++ 经典面试题(一)
- javaweb经典面试题(一)
- 前端经典面试题(一)
- 经典面试题一:用两个栈实现一个队列
- C++经典面试题(一)
- SQL经典面试题一
- Java经典面试题 一
- 经典面试题(*****)
- undo_retention 确定最优的撤销保留时间
- 12月7号
- Mysql
- 深入理解Spring 之 源码剖析AOP(XML配置方式)
- ACM 某种序列
- 经典面试题golang实现方式(一)
- 【算法】合并k个有序的链表-基于最小堆的思想
- python通过string运行代码
- 动态存储器分配:内存动态分区分配方式的理解以及模拟(一)
- 数据结构:一元多项式相加和相减
- matlab写二次指数平滑
- poi 3.8 SXSSFWorkbook没有删除本地缓存文件方法
- win 10 PHP开发环境配置
- 全面提高你的搜索技巧