ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

图解算法——反转字符串

2021-07-27 23:34:17  阅读:241  来源: 互联网

标签:String System sc 算法 字符串 new 图解 public


1、题目描述

接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)。

题目来源:
https://www.nowcoder.com/practice/e45e078701ab4e4cb49393ae30f1bb04?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1

2、示例

输入描述:输入一行,为一个只包含小写字母的字符串。

输出描述:输出该字符串反转后的字符串。

示例1:

输入:abcd

输出:dcba

 

3、思路

有了前车之鉴,上篇文章提到的反转整数的题目,很快会想到用stringBuffer的 reverse()反转函数。

代码如下:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc  = new Scanner(System.in);
        while(sc.hasNextLine()){
            StringBuffer sb = new StringBuffer(sc.nextLine());
            sb.reverse();
            System.out.println(sb);
        }
    }
}

提交结果:

 

 还不错,击败了一半的人。但是呢?你想啊,面试官给你出这个题目,能让你用一个函数就解决掉嘛?

所以,这个题目的意思,肯定是让你自己实现reverse() 函数的原理。

so.......

思路2:

将输入的字符串转换成字符数组,然后逆序输出。

代码如下:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc  = new Scanner(System.in);
        while(sc.hasNextLine()){
            String str = sc.nextLine();
            char[] chs = str.toCharArray();
            for(int i = str.length()-1; i>=0;i--){
                System.out.print(chs[i]);
            }
        }
    }
}

看看提交结果如何:

 

 还不如思路一。因为自己又设定了一个char[] 数组来存放转换的字符串,所以内存空间又增大了。

所以啊,还是根据上篇经验,只有序列化输入输出才会可能提高速度。

思路3:

import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException{
        InputStream in  = System.in;
        int len;
        byte[] b = new byte[1024];
        while((len = in.read(b)) > 0){
            String str = new String(b,0,len-1);
            char [] chars = str.toCharArray();
            char [] charsFb = new char[chars.length];
            for(int i = 0;i<chars.length;i++){
                charsFb[i] = chars[chars.length -1 -i];
            }
            System.out.println(new String(charsFb));
        }
    }
}

输出结果:

 

 果然,快多了,而且内存占用也少了。

 

 

 

Over......

标签:String,System,sc,算法,字符串,new,图解,public
来源: https://www.cnblogs.com/gjmhome/p/15068397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有