字符串倒序输出

这篇具有很好参考价值的文章主要介绍了字符串倒序输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期面试有这样一个问题,给定一个字符串,将其倒序输出,这种问题乍一看很好处理,但是实际在写的时候不知道怎么写了,有思路,但是没写出来。记录一下。

字符串反转实现的方式有多种,本质思想是将两端的数据进行对调,这个需要关系到二分法。

计算字符串总长度对半从前往后或者从后往前进行字符串反转都可以。看很多源码里是从后往前处理。

还可以通过数据结构中的栈实现,因为栈是后进先出(Last In First Out,LIFO)的数据结构,对于字符串倒序输出,正好符合这个要求。

下面以 java 为例进行说明

public class StringReverse {

    public static void reverse(String str) {
        char[] array = str.toCharArray();
        int length = array.length - 1;
        // 取中间值
        int half = array.length >> 1;
        // way1(array, length, half);
        // way2(array, length, half);
        // array = way3(array, length);
        // array = way4(array);
        array = way5(array, length);
        System.out.println(new String(array));
    }

    /**
     * 两数交换
     *
     * @param array
     * @param length
     * @param half
     */
    public static void way1(char[] array, int length, int half) {
        for (int i = 0; i < half; i++) {
            char t = array[length - i];
            array[length - i] = array[i];
            array[i] = t;
        }
    }

    /**
     * 异或方式交换
     *
     * @param array
     * @param length
     * @param half
     */
    public static void way2(char[] array, int length, int half) {
        for (int i = 0; i < half; i++) {
            array[length - i] ^= array[i];
            array[i] ^= array[length - i];
            array[length - i] ^= array[i];
        }
    }

    /**
     * 数组倒序拼接
     *
     * @param array
     * @param length
     * @return
     */
    public static char[] way3(char[] array, int length) {
        StringBuffer temp = new StringBuffer();
        for (int i = length; i >= 0; i--) {
            temp.append(array[i]);
        }
        array = temp.toString().toCharArray();
        return array;
    }

    /**
     * 通过 StringBuffer 调用 AbstractStringBuilder 的 reverse() 实现倒序
     *
     * @param array
     * @return
     */
    public static char[] way4(char[] array) {
        StringBuffer temp = new StringBuffer();
        array = temp.append(array).reverse().toString().toCharArray();
        return array;
    }

    /**
     * 通过 String 的 charAt() 倒序拼接
     *
     * @param array
     * @param length
     * @return
     */
    public static char[] way5(char[] array, int length) {
        String s = new String(array);
        StringBuffer temp = new StringBuffer();
        for (int i = length; i >= 0; i--) {
            temp.append(s.charAt(i));
        }
        array = temp.toString().toCharArray();
        return array;
    }

    public static void main(String[] args) {
        reverse("1234");
    }
}

对于面试中遇到的问题,一般是考察算法类的,对应代码里的第一种和第二种,那种内部封装的一般情况下不会问这个。

java 语言的好处是很多地方给开发人员封装了,带来的坏处是不思考这些底层问题了,在遇到一些问题的时候棘手。

https://www.cnblogs.com/taich-flute/p/10070143.html文章来源地址https://www.toymoban.com/news/detail-805411.html

到了这里,关于字符串倒序输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 8086汇编:输入输出数字、字符、字符串功能

    前言:初学汇编,可能一时难以习惯这种任何事情都要“亲力亲为”的方式。就拿输入输出来说,高级语言一个函数就可以搞定的事情,在汇编中却不是那么容易的。下面简单介绍下8086汇编输入输出数字和字符串的问题。 调用21号中断的0ah和09h号功能,可以实现字符串的输入

    2023年04月25日
    浏览(49)
  • 字符串的输入输出

    2024年01月19日
    浏览(35)
  • C语言学习:输入一行字符串,输出字符串中最长的单词。

    输入一行字符,编写一个函数,将此字符串中最长的单词输出。 代码示例如下: 一、输出字符串中第一个最长单词 测试结果:  二、输出字符串中所有最长单词 评论区指出上述程序不能输出同样最长的两个单词,修改后该程序能输出所有最长单词,即如果有多个同样最长的

    2024年02月05日
    浏览(59)
  • C语言字符和字符串的输入与输出

    1、scanf函数输入单个字符 C语言scanf输入时缓冲区问题 scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格、回车这类字符,当你用%d接收时是不会影响的,但是用%c就会产生错误,这是因为在\\\"%c\\\"输入时,空格和转义字符均作

    2023年04月09日
    浏览(80)
  • C语言-字符串与输入输出

    在 C 语言中,字符串实际上是使用空字符 \\0 结尾的一维字符数组。因此,\\0 是用于标记字符串的结束。 空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。 比如:下面声明和初始化创建

    2024年02月02日
    浏览(57)
  • C++ puts()函数(输出简单字符串)

    C++中的 puts() 函数是用来输出字符串的函数,它的原型如下: 其中, str 是要输出的字符串, puts() 函数会自动在字符串末尾添加一个换行符 n ,并将其输出到标准输出流(即屏幕)上。 相比于 cout 输出流, puts() 函数的优点是简单易用,不需要像 cout 一样需要使用 运算符来

    2024年02月05日
    浏览(49)
  • 将输入的字符串反向输出(c语言)

    2024年02月05日
    浏览(59)
  • 【Haxe】(二)字符串与变量的输入输出

    每次学习一门新语言,各种手册和教程一上来就是讲变量如何定义,数据结构怎么用,很少有讲输入输出应该怎么写的。我比较喜欢先搞懂这部分,这让我感觉像是掌握了学习主动权,很能调动我的学习积极性。于是我的第一篇笔记就打算记录 Haxe 语言的输入输出语句怎么使

    2024年02月07日
    浏览(33)
  • 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

    题目: 编写一个函数 ,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数, 在主函数中输入字符串以及输出上述的结果。 根据题目要求,来编写程序。 首先,确定主函数部分。其中d=digit数字、s=space空格、l=letter字母、o=other其他字符。 注意:因

    2024年02月04日
    浏览(76)
  • 关于输出字符串出现“烫烫烫烫”的解决方法

    在查找资料后发现,是因为字符数组末尾没有加上\\\'\\0\\\'结束标识,程序无法判断字符数组是否读完,然后输出了字符数组全部内存,即“烫烫烫烫烫烫”; 一般使用字符串常量初始化字符数组会在末尾自动添加空值字符\\\'\\0\\\',但在字符数组赋值,比如数组字符赋值给未初始化结

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包