职业经验 # 每日一道面试题 # 任何语言来实现 String 串反转功能

陈子昂 for 求职面试圈 · 2017年09月30日 · 最后由 林月 回复于 2022年05月19日 · 1692 次阅读

天王盖地虎 雪碧两块五

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 18 条回复 时间 点赞


python 太好用 以至于不会写代码

这问题人家不用 String 的,连题目都看不懂。能不能 “白话文” 点?

String str = "abcdefg";

StringBuilder result1 = new StringBuilder(str).reverse();

StringBuffer result2 = new StringBuffer(str).reverse();

同时附上原生的 reverse() 源码:

public AbstractStringBuilder reverse() {
     boolean hasSurrogates = false;
     int n = count - 1;
     for (int j = (n-1) >> 1; j >= 0; j--) {
         int k = n - j;
         char cj = value[j];
         char ck = value[k];
         value[j] = ck;
         value[k] = cj;
         if (Character.isSurrogate(cj) ||
             Character.isSurrogate(ck)) {
             hasSurrogates = true;
         }
     }
     if (hasSurrogates) {
         reverseAllValidSurrogatePairs();
     }
     return this;
 }

testerhome 也开始刷 leetcode 上的题目了么😩

debugtalk 回复

有意思,用栈的方式

CC 回复

好处是不会搞错下标😅

纯稀饭 回复

你好,这经典题目,在过去职业生涯里,被面试以及面别人出现过很高的频率。文本化格式被广泛应用在 10 年前,属于高频的考题。

💯 有兴趣的社区小伙伴 可以在试试 json 格式的反转和 自定义数据内容 头尾一起反转:)<---头尾反转也会是每日面试题里面的。

var str = "TesterHome";
console.log( str.split("").reverse().join("") );
陈子昂 回复

是呀 受教了 我之前做过的是反转 int

test = 'TesterHome'
reversed_str = ''
for i in reversed(test):
    reversed_str += i
print(reversed_str)
纯稀饭 回复

刚想了下,反转 int 比这个要稍微复杂点,因为要处理最后是 0。多谢你贡献了 1 个面试题。

就是字符串倒序排列呗?

陈子昂 回复

还得考虑 int 反转后溢出问题 负数等等

纯稀饭 回复

对的,考虑不周到。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册