怎么把i am a student逆置成student a am i?面试题逆置字符串讲解

Posted 国家一级建筑师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把i am a student逆置成student a am i?面试题逆置字符串讲解相关的知识,希望对你有一定的参考价值。


一、题目描述

字符串逆置,如 “I am a student” 逆置为 "student a am I"

二、解题思路

1、逆序整个字符串
2、逆序每个单词

  /**
     * 用来逆序一个整体,可以是单词也可以是整个数组
     * @param c
     * @param i
     * @param j
     */
    public  static  void reverse (char c[],int i,int j){
    //设下标i,j表示逆序的开头和结尾
        while (i<j){
            char tmp=c[i];
            c[i]=c[j];
            c[j]=tmp;
            i++;
            j--;
        }
    }

由reverse方法我们逆序了整个字符串,接下来逆置每个单词

    //2、每个单词逆序
        int start=0;
        for (int i = 0; i < c.length ; i++) {
            //当i自己是空格的时候,就说明她前面的是一个整体单词了
            //比如   i am a student    当i走到4下标的时候,am就是一个单词,逆置它
            if(c[i]==' '){
                reverse(c,start,i-1);
                start=i+1;
            }
        }

三、完整代码

  public  static  void reverse (char c[],int i,int j){
        while (i<j){
            char tmp=c[i];
            c[i]=c[j];
            c[j]=tmp;
            i++;
            j--;
        }
    }
    public  static  void reverseStr(String s){
        //去除字符串开头的空格
       s= s.trim();
        //1、整体逆序
        //先转换整数组
        char []c=  s.toCharArray();
        reverse(c,0,c.length-1);
        //2、每个单词逆序
        int start=0;
        for (int i = 0; i < c.length ; i++) {
            //当i自己是空格的时候,就说明她前面的是一个整体单词了
            //比如   i am a student    当i走到4下标的时候,am就是一个单词,逆置它
            if(c[i]==' '){
                reverse(c,start,i-1);
                start=i+1;
            }
        }
        System.out.println(c);
    }

四、运行结果


如果大家还想多做一些leetCode或者剑指offer的题的话,可以看看我之前的文章,难度简单,适合入门。

三种方法任君挑选 LeetCode_136只出现一次的数字

什么?动态规划10行求出连续子数组的最大和 剑指offer-42讲解

剑指 Offer 39. 数组中出现次数超过一半的数字 简单易懂14行搞定 。人人皆可会

二叉树的层序遍历原理+LeetCode真题练习

LeetCode 24:两两交换链表中的节点,1662. 检查两个字符串数组是否相等

LeetCode 第二十一题

剑指 Offer 58 - II. 左旋转字符串的三种解法一起看看吧!!

以上是关于怎么把i am a student逆置成student a am i?面试题逆置字符串讲解的主要内容,如果未能解决你的问题,请参考以下文章

数组的逆置

线性表逆置

数组逆置

求数组逆置(数组与指针实现)

数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换

数据结构与算法面试题80道(10)