大话字符串逆序
2019-11-21 08:32:51来源:博客园 阅读 ()
大话字符串逆序
窗外的大厦,桌子上的水杯,手中的笔。
面试官:“先来一点基础的吧,用Java写一个方法,入参是一个字符串,返回逆序后的字符串。”
我暗想确实很基础,于是便写下:
public static String reverse(String str) {
StringBuffer sb = new StringBuffer(str);
return sb.reverse().toString();
}
欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。
面试官看了看,说:“写的很好,用StringBuffer的reverse方法。如果你来实现其中算法,你会怎么写?”
我直接说:“从最后一个字符开始,一直向前添加字符就可以了。”重新写了一个遍代码:
public static String reverse(String str) {
char[] chars = str.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = chars.length - 1; i >= 0; i--) {
sb.append(chars[i]);
}
return sb.toString();
}
欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。
面试官看了看,说:“写的很好,逆序的功能完成了。不过再想想,有什么可以优化的地方?”
我想了想,说:“好像没有什么可以优化的?”
面试官提示了一句:“比如,采用首尾替换的方式呢?是不是可以减少时间复杂度?”
我恍然大悟,说:“的确是,我再改一下。”又重新写了一个遍代码:
public static String reverse(String str) {
char[] chars = str.toCharArray();
int n = chars.length - 1;
for (int i = 0; i <= n / 2; i++) {
int j = n - i;
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
return new String(chars);
}
欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。
面试官又看了看,说:“写的很好,就是这个思想。不过再想想,有什么可以优化的地方?”
我左思右想一番,说:“应该没有吧。”
面试官说:“确定没有了嘛?”
我肯定地回答:“确定没有了。”
面试官:“好吧,这个问题先到这。”
我有点不服气,抢着问到:“您说说,还有什么可以优化的地方?”
面试官微笑了一下,说:“我认为还有两个地方可以优化。”
“第一,for循环的布尔表达式里不应该放除2的计算,否则每次循环都会计算一次。”
“第二,除2的计算可以用右移一位代替,这样效率更高。”
面试官在我写的代码上改了几笔,就变成了:
public static String reverse(String str) {
char[] chars = str.toCharArray();
int n = chars.length - 1;
for (int i = (n - 1) >> 1; i >= 0; i--) {
int j = n - i;
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
return new String(chars);
}
欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。
我茅塞顿开,这次面试真的是学到了。
本故事纯属虚构,如有雷同实属巧合。
原文链接:https://www.cnblogs.com/heihaozi/p/11904145.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java实现的三种字符串反转 2020-06-09
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度 2020-05-20
- LeetCode 680. 验证回文字符串 Ⅱ 2020-05-19
- 字符串 2020-05-18
- LeetCode 151. 翻转字符串里的单词 2020-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash