算法 Tricks(一)—— 字符串和数组的翻转

原创 2016年06月01日 10:11:21

所谓字符串和数组的翻转,其实是对应位的交换,考察的是下标之间的关系,要交换的下标的关系为:

swap(S[i],S[n1i])

也即下标之和为数组的长度减1,而与数组的长度为奇数还是偶数无关。

void ReverseArray(int *A, int n){
    for (int i = 0; i < n/2; ++i){
        swap(A[i], A[n-1-i]);
    }
}

当然更一般化的接口设计为:

void ReverseArray(int *A, int lo, int hi){
    // ReverseArray(int *A, int n) ⇒ ReverseArray(A, 0, n)
    // [lo, hi)
    for (int i = 0; i < (lo + hi)/2; ++i){
        swap(A[lo + i], A[hi - i - 1]);
    }
                // lo + i + (hi - i - 1) == lo + hi - 1
}

当然也可以不借助 swap 函数的写法为:

void ReverseArray(int *A, int lo, int hi){
    while (lo < hi){
        int t = A[lo];
        A[lo++] = A[--hi];
        A[hi] = t;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

左旋转字符串

题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”ab...

字符串对点按段翻转

最近浏览博客,遇到这样的题,于是就敲了敲,感激比较简单。        请实现一个程序,能对点分字符串按段翻转。如”www taobao  com”翻转为”com  taobao  www”,”spo...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

字符串翻转算法-JAVA

单词翻转问题描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,输入“I am a student.”,则输出“...

旋转字符串

题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一...

字符串:翻转句子中单词的顺序

题目: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则...

翻转字符串

描述:给定一个字符串,逐个翻转字符串中的每个单词。 说明 单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的多个空...

字符串翻转

有一个字符数组的内容为:”student a am i”,请你将数组的内容改为”i am a student”.   首先把字符串整体翻转,得到的字符串为“i ma a tneduts”,然后对...

算法入门-数组和字符串

3-1 数组 3-1-1开灯问题 有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人把所有编号为2的倍数的开关按下(这些灯将关闭)。第3个人按下所有编号为3的倍数的开关(开着的会关,关的会打开),...

翻转字符串

给定一个字符串,逐个翻转字符串中的每个单词。 说明 单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的多个空格...

字符串翻转

暴力翻转#include #include using namespace std; void LeftShiftOne(string &s, int n) { char t = s[0];  ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)