字符串面试题(二)— 间隔字符串逆序

简介: 对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。

对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。给定一个原字符串A和它的长度,请返回逆序后的字符串。

例子:
“dog loves pig”

输出:
“pig loves dog”


示例代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Reverse {
public:
    string reverseSentence(string A, int n) 
    {
        reverseWord(A,0,n-1);
        int i=0,j=0;
        while(i<n)
        {
            while(i<n&&A[i]==' ')
                i++;
            if(i>=n)
                return A;
            j=i;
            while(i<n&&A[i]!=' ')
                i++;
            if(i>=n)
            {
                reverseWord(A,j,n-1);
                return A;
            }
            reverseWord(A,j,i-1);
        }
        return A;

    }
    void reverseWord(string &A,int low,int high)
    //局部逆序函数
    {
        if(low>=high)
            return;
        char temp;
        while(low<high)
        {
            temp=A[low];
            A[low]=A[high];
            A[high]=temp;
            low++;
            high--;
        }
    }
};
int main()
{
    string arr("dog loves pig");
    Reverse a;
    a.reverseSentence(arr,13);
    cout<<arr;
    return 0;
}
相关文章
|
8月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
57 0
|
5月前
|
安全 Java 编译器
【Java基础面试二十九】、说一说你对字符串拼接的理解
这篇文章讨论了Java中字符串拼接的四种常用方式(使用`+`运算符、`StringBuilder`、`StringBuffer`和`String`类的`concat`方法),每种方式适用的场景,以及在不同情况下的性能考量。
|
5月前
|
Java
【Java基础面试二十八】、使用字符串时,new和““推荐使用哪种方式?
这篇文章讨论了在Java中使用字符串时,推荐使用双引号`""`直接量方式而不是使用`new`操作符,因为`new`会在常量池之外额外创建一个对象,导致更多的内存占用。
|
8月前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
72 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
7月前
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
6月前
|
存储 安全 Java
Java面试题:请解释Java中的字符串和字符串缓冲区?
Java面试题:请解释Java中的字符串和字符串缓冲区?
40 0
|
8月前
|
索引 Python Go
【python学习】字符串详解,面试必问公司的问题
【python学习】字符串详解,面试必问公司的问题
|
8月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
223 0
|
8月前
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩
29 0
|
8月前
|
算法 测试技术 索引
力扣面试经典题之数组/字符串(二)
力扣面试经典题之数组/字符串(二)
41 0

热门文章

最新文章