以下所有题目的关键信息都会用【】括起来,我们不对题目进行分析,只给出题目的解决方案;如有疑问请不吝赐教。

题目: 
请实现一个算法,确定一个字符串的所有字符【是否全都不同】。这里我们要求【不允许使用额外的存储结构】。给定一个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

  

经典面试题golang实现方式(一)的更多相关文章

  1. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  2. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

  3. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

  4. 李洪强经典面试题152-Runtime

    李洪强经典面试题152-Runtime   Runtime Runtime是什么 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码, ...

  5. 李洪强iOS经典面试题144-数据存储

    李洪强iOS经典面试题144-数据存储   数据存储 sqlite中插入特殊字符的方法和接收到处理方法. 除'其他的都是在特殊字符前面加"/",而 ' -> '' .方法:k ...

  6. 李洪强iOS经典面试题141-报错警告调试

    李洪强iOS经典面试题141-报错警告调试   报错警告调试 你在实际开发中,有哪些手机架构与性能调试经验 刚接手公司的旧项目时,模块特别多,而且几乎所有的代码都写在控制器里面,比如UI控件代码.网络 ...

  7. 李洪强iOS经典面试题140-UI

    李洪强iOS经典面试题140-UI   UI viewcontroller的一些方法的说明viewDidLoad,viewWillDisappear, viewWillAppear方法的 顺序和作用? ...

  8. 李洪强iOS经典面试题139-Swift

    李洪强iOS经典面试题139-Swift Swift 网上有很多Swift的语法题,但是Swift现在语法还未稳定,所以在这里暂时不贴出语法题,可以自行搜索. Swift和Objective-C的联系 ...

  9. iOS经典面试题(转)

    iOS经典面试题   前言 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看.我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖.整篇题目30多个没有一个答案是对 ...

随机推荐

  1. poj 2253 Frogger(floyd变形)

    题目链接:http://poj.org/problem?id=1797 题意:给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通路 ...

  2. 4、cesium场景出图,打印图件

    cesium场景出图,打印图件 把3d渲染的页面进行截图,并可以下载到本地:代码如下: function printscreenScene() { var image = new Image();// ...

  3. 【Offer】[66] 【构建乘积数组】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一个数组A[0, 1, -, n-1],请构建一个数组B[0, 1, -, n-1],其中B中的元素B[i] =A[0]×A[1]× ...

  4. 一次使用scrapy的问题记录

    前景描述: 需要获取某APP的全国订单量,及抢单量.由于没有全国的选项所以只能分别对每一个城市进行订单的遍历.爬虫每天运行一次,一次获取48小时内的订单,从数据库中取出昨天的数据进行对比,有订单被抢则 ...

  5. SpringBoot应用启动过程分析

    真的好奇害死猫!之前写过几个SpringBoot应用,但是一直没搞明白应用到底是怎么启动的,心里一直有点膈应.好吧,趁有空去看了下源码,写下这篇博客作为学习记录吧! 个人拙见,若哪里有理解不对的地方, ...

  6. Cloudera版本的hadoop环境准备

    对于普通学习用户而言,应该先下载一个虚拟机, 推荐vmware,因为是免费的. Hadoop环境有三个版本: Apache版本(Apache基金会) CDH(cloudera公司) hdp版本(Hor ...

  7. IDEA中工程上传到SVN

    1.先在IDEA上集成SVN 2.查看SVN仓库:连接SVN ①此时应该先去SVN服务器中新建一个SVN服务: 点击下一步 点击下一步 点击create ②查看SVN仓库 先复制SVN的地址 把复制的 ...

  8. java8-Stream原理

    前言 java8新特性目前使用非常广泛,其中Stream更是最常用的特性,这篇文章将介绍Stream的原理,如果你现在还不怎么会用的话可以看一下菜鸟教 https://www.runoob.com/j ...

  9. DevOps平台

    DevOps定义(来自维基百科): DevOps(Development和Operations的组合词)是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops) ...

  10. Java第三次作业第三题

    3. 请补充下面的Socket通信程序内容: (1)Socket通信中的服务端程序:ChatServerSocket.java package naizi; import java.io.*; imp ...