逆置字符串
一、题目描述二、解题思路三、完整代码四、运行结果一、题目描述
字符串逆置,如 “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. 左旋转字符串的三种解法一起看看吧!!