怎么把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的题的话,可以看看我之前的文章,难度简单,适合入门。
什么?动态规划10行求出连续子数组的最大和 剑指offer-42讲解
剑指 Offer 39. 数组中出现次数超过一半的数字 简单易懂14行搞定 。人人皆可会
以上是关于怎么把i am a student逆置成student a am i?面试题逆置字符串讲解的主要内容,如果未能解决你的问题,请参考以下文章
数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换