算法 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;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构之数组和字符串的反转java实现

采用java实现数组和字符串的反转
  • u013871100
  • u013871100
  • 2016年01月15日 21:04
  • 1421

字符串和数组翻转

字符串翻转 //方法一 翻转函数 /*$str="abcdefg"; $strrev=strrev($str); var_dump($strrev);*/ //方法二  循环 $str...
  • u010865136
  • u010865136
  • 2016年04月28日 15:54
  • 170

赛码网基础算法——翻转数组(快排的思想)

题目转自赛码网1、题目描述:  给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列。其中数组片段[l,r]表示序列a[l], a[l+1],...
  • FX677588
  • FX677588
  • 2017年04月11日 21:41
  • 664

字符串单词翻转总结几种常见方法

leetcode地址:https://leetcode.com/problems/reverse-words-in-a-string Given an input string, reverse th...
  • wx805541464
  • wx805541464
  • 2017年10月07日 15:00
  • 224

程序员面试金典题解 原串翻转

题目描述请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保...
  • Xd_Yu
  • Xd_Yu
  • 2016年06月13日 20:29
  • 301

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字...
  • miachen520
  • miachen520
  • 2016年06月27日 20:47
  • 1359

C++基础——tricks,让人惊艳的那些代码

本文主要涉及c++中常见的一些神奇的tricks。 1. 获得可变参数列表中最大类型的类型大小 2. tagged union 3. 模板的特化...
  • lanchunhui
  • lanchunhui
  • 2015年11月02日 00:01
  • 1116

序列神器伸展树 区间维护,区间提取,区间翻转的AC模板。

如果不懂splay,请进入百度文库,如果看懂了就忽略此文 题源:poj3580 splay,伸展树,是一颗功能好的平衡树,它通过把操作过的询问旋到根,来节省时间,使得总时间为log(迷之常数....
  • qq_30446721
  • qq_30446721
  • 2016年12月14日 22:48
  • 534

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串...
  • z_opt
  • z_opt
  • 2017年05月29日 09:32
  • 309

算法:数组顺时针、逆时针90度旋转

以九度oj1171为例: 首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。 操作类型有四种:  1 2 表...
  • flytiger_ouc
  • flytiger_ouc
  • 2013年04月06日 18:05
  • 1049
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法 Tricks(一)—— 字符串和数组的翻转
举报原因:
原因补充:

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