精华内容
下载资源
问答
  • 字符串倒序

    2019-03-06 13:40:53
    字符串倒序有不少方法,常见的几种如下: 将字符串转化为字符数组,然后倒序输出; 递归调用 String 类的 subString() 方法; 借用 StringBuffer 类封装的 reverse() 方法; 。。。等其他方法。 不过这次要用 ...

    字符串倒序有不少方法,常见的几种如下:

    1. 将字符串转化为字符数组,然后倒序输出;
    2. 递归调用 String 类的 subString() 方法;
    3. 借用 StringBuffer 类封装的 reverse() 方法;
    4. 。。。等其他方法。

    不过这次要用 “异或” 计算来实现字符串的倒序。

    首先需要了解一下 “异或” 运算:相同为 “0”,相异为 “1”。

    • 有这样几个需要用到的运算规则:
    • a ⊕ a = 0;
    • a ⊕ 0 = a;
    • a ⊕ b = b ⊕ a;
    • a ⊕ b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c

    设有两个字符a、b,则有如下的推导过程:

    c = a ⊕ b;d = a ⊕ c = a ⊕ (a ⊕ b) = b;e = b ⊕ c = b ⊕ (a ⊕ b) = a;令 a = d;b = e,两个字符交换成功。

    public String reverse(String str) {
    	char[] temp = str.toCharArray();
    
    	int begin = 0;
    	int end = str.length() - 1;
    
    	while (begin < end) {
    		temp[begin] = (char) (temp[begin] ^ temp[end]);
    		temp[end] = (char) (temp[end] ^ temp[begin]);
    		temp[begin] = (char) (temp[end] ^ temp[begin]);
    		begin++;
    		end--;
    	}
    
    	return new String(temp);
    }

     

    展开全文
  • 今天做了下LeetCode上面字符串倒序的题目,突然想Python中字符串倒序都有哪些方法,于是网上查了下,居然有这么多种方法:个人觉得,第二种方法是最容易想到的,因为List中的reverse方法比较常用,做LeetCode题目7....

    今天做了下LeetCode上面字符串倒序的题目,突然想Python中字符串倒序都有哪些方法,于是网上查了下,居然有这么多种方法:

    个人觉得,第二种方法是最容易想到的,因为List中的reverse方法比较常用,做LeetCode题目7. Reverse Integer也用了这种方法,程序耗时65ms

    #字符串的反转

    #用到for循环的步长参数,从大到小循环,到0为止

    def reverse1 (s):

    rt = ''

    for i in range(len(s)-1, -1, -1):

    rt += s[i]

    return rt

    #用到list的反转函数reverse()

    def reverse2 (s):

    li = list(s)

    li.reverse()

    rt = "".join(li)

    return rt

    #用到切片的步长参数,负数代表从右往左遍历

    def reverse3 (s):

    return s[::-1]

    #用到python内建函数reversed(str)

    def reverse4 (s):

    return "".join(reversed(s))

    #用到python内建函数reduce()

    """

    def reduce(function, sequence, initial=None):

    reduce(function, sequence[, initial]) -> value

    Apply a function of two arguments cumulatively to the items of a sequence,

    from left to right, so as to reduce the sequence to a single value.

    For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates

    ((((1+2)+3)+4)+5). If initial is present, it is placed before the items

    of the sequence in the calculation, and serves as a default when the

    sequence is empty.

    """

    #简单的说就是遍历序列s,放入第一个参数的函数中执行,执行之后结果作为函数的第一个参数,序列的下一个元素作为第二个参数,再次运算

    #比如第一次,x='1',y='2';第二次:x='21',y='3';第三次:x='321',y='4'...

    from functools import reduce

    def reverse5 (s):

    return reduce(lambda x,y:y+x,s)

    好奇的是,到底哪个方法运算速度更快呢,于是实验了一下:

    aaarticlea/png;base64,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" alt="" />

    显然,第三个方法速度最快,也就是利用切片的步长参数。

    可见,这个方法比reverse方法更快更方便,且适用于没有reverse方法的字符串和元组。

    于是用该方法替换LeetCode第7题的答案:59ms,果然快了一丢丢:)

    附LeetCode 7. Reverse Integer代码:

    增加了负数和超过int范围的判断,满足leetcode第7题需要:

    class Solution(object):

    def reverse(self, x):

    """

    :type x: int

    :rtype: int

    """

    y = str(x)

    flag = 0

    if '-' == y[0]:

    flag = 1

    y = y[1:]

    result='-'

    else:result = ''

    result += y[::-1]

    if int(result) > 2**31-1 or int(result) < 1-2**31 :return 0

    return int(result)

    &lbrack;Python&rsqb;实现字符串倒序的三种方法

    a=" 1: print(a[::-1]) 2: b=list(a) b.reverse() print(''.join(b)) 3: c=len(a)-1 str_1=[] while(c ...

    Python 字符串

    Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...

    【C&plus;&plus;实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

    No&period;007 Reverse Integer

    7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...

    js字符串倒序

    有的时候我们需要把字符串倒序. 比如“范坚强”的倒序就是“强坚范”. 如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var r ...

    Reverse Integer 2015年6月23日

    题目: Reverse digits of an integer. Example1: x = , return Example2: x = -, return - 思路:递归 解答: / test ...

    LeetCode--No&period;007 Reverse Integer

    7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...

    leetcode:Reverse Integer 及Palindrome Number

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...

    LeetCode 7 Reverse Integer &amp&semi; int

    Reverse Integer 想用余10直接算,没想到 -123%10 是 7, 原因 -123-(-123//10*10) r=a-n*[a/n] 以上,r是余数,a是被除数,n是除数. 唯一不同 ...

    随机推荐

    烂泥:VMWare Workation双网卡配置IP地址

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天给一个客户做远程项目实施,客户那边的服务器是Windows OS的,我们这边的业务 ...

    GreenPlum高效去除表重复数据

    1.针对PostgreSQL数据库表的去重复方法基本有三种,这是在网上查找的方法,在附录1给出.但是这些方法对GreenPlum来说都不管用. 2.数据表分布在不同的节点上,每个节点的ctid是唯一的 ...

    sed入门详解教程

    sed是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed本身是一个非常复杂的工具,有专门的书籍讲解sed的具体用法,但是个人觉得没有 ...

    Linux系统入门学习:在curl中设置自定义的HTTP头

    http://www.linuxidc.com/Linux/2015-02/114220.htm

    C语言中的struct和typedef struct&lt&semi;转载&gt&semi;

    原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数 ...

    微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法

    本文介绍如何去除微信顶部的“防欺诈盗号,请勿支付或输入qq密码”.或 “防欺诈或盗号,请不要输入qq密码”如图所示.    一.微信认证 目前只有已经通过微信认证的账号可以去除这个提示.在公众账号下左 ...

    Swift学习初步(一)

    前几天刚刚将有关oc的教程草草的看了一遍,发现oc其实也不像传说的那么难.今天又开始马不停蹄的学习Swift因为我很好奇,到底苹果出的而且想要代替oc的编程语言应该是个什么样子呢?看了网上的一些中文教 ...

    最快速的&OpenCurlyDoubleQuote;高斯”模糊算法(附Android源码)

    这是一个外国人的算法,本人是搬运工.参考:http://blog.ivank.net/fastest-gaussian-blur.html   1:高斯模糊算法(参考:http://www.rua ...

    BNU Online Judge-34777-Magical GCD

    题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34777 题意 如样例 输入 1530 60 20 20 20 输出 80 如  30 和 ...

    idea不显示gradle的视图解决办法

    选择build tool.找到gradle→Runner,把委托给IDE构建勾选,然后重新导入一次就好了.

    展开全文
  • 打开IDLE输入:string='12345'再输入下面的代码就会将字符串倒序输出方括号的使用就是切片,下面将解释它的用法。格式解释格式:字符串[A:B:step]。方括号中有3个位置可填写整数,它们是A,B,step。step不填时,...

    5229be3718173eccf7824b33d5ac138f.png


    实用技巧


    今天我们用字符串来讲切片的知识,先给一个常用的技巧,能简单地对字符串进行倒序。

    打开IDLE输入:

    string='12345'

    9bd8afc16e604ddb24f1009d916250bc.png

    再输入下面的代码就会将字符串倒序输出

    f2beb5fba3ffc459aa2e8cdc56a36b19.png

    方括号的使用就是切片,下面将解释它的用法。


    格式解释


    格式:字符串[A:B:step]。方括号中有3个位置可填写整数,它们是A,B,step。step不填时,默认值为1,其他

    AB(以变量string为例)step
    05>0时
    -1-6<0时

    本例子中,数据string的B为5.

    因此,以下三种写法得到的结果是一样的,都是从0下标取到最后一个下标的下一个值,这里是5。

    19848a358db5ea652ca030b4b8f688d0.png

    什么是下标?这里以一张表说明。

    变量string
    数据'1''2''3''4''5'
    下标101234
    下标2-5-4-3-2-1
    • A,B所构成的区间是半开半闭的——[A, B)。

    所以string[0:5:1]取到的是’12345‘,如果写成string[0:4:1],则取到的是'1234'。

    同样,以下的写法得到的结果也是一样的

    2639cb3d68ac75d6b3f3d287024fdb2a.png

    • 切片先取后加,每取一次,将A加step,直到|A|>=|B|。

    >>> string[0:5:2]'135'

    像上面,假设有一个容器,A初始为0,先取下标为0的数据'1'放到容器中,然后A+2=2;取下标为2的数据'3'放到容器中,然后A+2=4;取下标为4的数据'5'放到容器中,然后A+2=6,|6|>=|B|,结束。

    展开全文
  • 主要介绍了一个字符串反转函数可实现字符串倒序,很简单,但很实用,感兴趣的朋友可以参考下
  • 字符串倒序排列.exe

    2019-09-26 02:33:37
    字符串倒序排列 - 程序,在windows上运行,可以将字符串变成倒序排列。
  • //转换成字符数组逆序输出public static void stringReverse(String s) {char[] charArr = s.toCharArray();String resultStr = "";for(int i=s.length()-1; i>=0; i--) {resultStr += charArr[i];}System.out....

    //转换成字符数组逆序输出

    public static void stringReverse(String s) {

    char[] charArr = s.toCharArray();

    String resultStr = "";

    for(int i=s.length()-1; i>=0; i--) {

    resultStr += charArr[i];

    }

    System.out.println(resultStr);

    }

    //转换成字符数组从两头开始交换

    public static void stringReverse(String s) {

    char[] charArr = s.toCharArray();

    char swap;

    for(int i=0,j=s.length()-1; i

    swap = charArr[i];

    charArr[i] = charArr[j];

    charArr[j] = swap;

    }

    System.out.println(charArr);

    }

    //递归

    public static void stringReverse(String s) {

    if(s.length() == 1) {

    System.out.print(s);

    } else {

    String s1 = s.substring(0, s.length()-1);

    String s2 = s.substring(s.length()-1);

    System.out.print(s2);

    stringReverse(s1);

    }

    }

    //将String转换成StringBuffer,然后调用StringBuffer的reverse()方法

    public static void stringReverse(String s) {

    StringBuffer stringBuffer = new StringBuffer(s);

    System.out.println(stringBuffer.reverse());

    }

    //进栈再出栈

    public static void stringReverse(String s) {

    Stack stack = new Stack();

    char[] charArr = s.toCharArray();

    for(int i=0; i

    stack.push(charArr[i]);

    }

    while(!stack.empty()) {

    System.out.print(stack.pop());

    }

    }

    原文链接:http://blog.csdn.net/justinavril/article/details/2719567

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2012-03-10 15:52

    浏览 893

    评论

    展开全文
  • 字符串倒序输出的两种方法
  • #python解决字符串倒序输出 def string_reverse(m): num=len(m) a=[] for i in range(num): a.append(m[num-1-i])#从最后一位的元素开始往新list内添加元素 return a 以上这篇python解决字符串倒序输出的问题...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,419
精华内容 1,767
关键字:

字符串倒序