RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 921378
Accepted
TWOfish
TWOfish
Asked:2020-12-16 01:42:59 +0000 UTC2020-12-16 01:42:59 +0000 UTC 2020-12-16 01:42:59 +0000 UTC

字符串中字符的顺序交替

  • 772

不同任意长度的字符串,不同的字符。如何将字符串的字符移动一个字符并依次遍历所有选项以获得字符串的输出1a2b3c:

1a2b3c
a2b3c1
2b3c1a
b3c1a2
3c1a2b
c1a2b3

需要使用 Unix ToolBox、Python、Perl 在终端的管道中启用类似的脚本。

python
  • 10 10 个回答
  • 10 Views

10 个回答

  • Voted
  1. MBo
    2020-12-16T02:31:24Z2020-12-16T02:31:24Z
    s = "1a2b3c"
    for _ in range(len(s)):
        print(s)
        s = s[1:] + s[0]
    
    1a2b3c
    a2b3c1
    2b3c1a
    b3c1a2
    3c1a2b
    c1a2b3
    
    • 4
  2. Best Answer
    MarianD
    2020-12-16T06:48:42Z2020-12-16T06:48:42Z

    在 Python 上:

    import collections
    
    dq = collections.deque("1a2b3c")
    
    for __ in range(len(dq)):
        print("".join(dq))
        dq.rotate(-1)
    

    结论:

    1a2b3c
    a2b3c1
    2b3c1a
    b3c1a2
    3c1a2b
    c1a2b3
    

    解释:

    类型deque(双队列)的对象有一个方法rotate()(旋转),当它的参数是 时,它可以完全按照您的意愿行事-1。
    (正数 - 向右旋转,负数 - 向左旋转。)

    因此它dq包含给定字符串的单个字符,您需要"".join()在打印之前将它们转换为字符串 ( )。

    • 3
  3. S. Nick
    2020-12-16T02:37:02Z2020-12-16T02:37:02Z
    val = '1a2b3c'
    
    [ val[i:len(val)]+val[0:i] for i in range(len(val))]
    
    ['1a2b3c', 'a2b3c1', '2b3c1a', 'b3c1a2', '3c1a2b', 'c1a2b3']
    
    • 2
  4. PinkTux
    2020-12-16T23:02:57Z2020-12-16T23:02:57Z
    #!/usr/bin/perl
    
    use Modern::Perl;
    
    my @chars = qw(1 a 2 b 3 c);
    # OR
    # my $s = '1a2b3c' # или из любого источника;
    # my @chars = split //, $s;
    while(1) {
        say @chars;
        push @chars, shift @chars;
    }
    
    • 1
  5. usr13
    2020-12-18T21:15:07Z2020-12-18T21:15:07Z
    use strict; use warnings;
    
    my $str = '1a2b3c';
    my $len = length($str) -1;
        for(0..$len){
        $str =~ s/(.)(.{$len})/$2$1/;
        print "$str\n"; 
        }
    


    a2b3c1
    2b3c1a
    b3c1a2
    3c1a2b
    c1a2b3
    1a2b3c
    
    • 0
  6. 69 420 1970
    2020-01-07T14:07:08Z2020-01-07T14:07:08Z

    重击:

    echo "a1b2c3" | xargs -i@ bash -c 'seq $(($(expr length @-))) | sed -z "s/[0-9]*\n/@/g;s/$/\n/" | grep -oE .{$(($(expr length @-)))}' 
    

    无法正常工作:

    a1b2c3a
    1b2c3a1
    b2c3a1b
    2c3a1b2
    c3a1b2c
    3a1b2c3
    
    • 0
  7. An0ther0ne
    2020-11-29T14:30:54Z2020-11-29T14:30:54Z

    老派风格:)

    #!/usr/bin/perl
    $chars = '1a2b3c';
    my @chars = split(//,$chars);
    $\="\n";
    foreach $i (@chars){
        print @chars;
        push @chars, shift @chars;
    }
    
    • 0
  8. An0ther0ne
    2020-11-29T14:47:49Z2020-11-29T14:47:49Z

    另一个 Perl 变体 => 使用 substr() 函数:

    #!/usr/bin/perl
    $chars = '1a2b3c';
    $\="\n";
    for (my $i=0;$i<length($chars);$i++){
        print $chars = substr($chars,1).substr($chars,0,1);
    }
    

    结论:

    a2b3c1
    2b3c1a
    b3c1a2
    3c1a2b
    c1a2b3
    1a2b3c
    
    • 0
  9. An0ther0ne
    2020-11-29T14:57:20Z2020-11-29T14:57:20Z

    Perl 使用正则表达式(已经完成,但可能更简单):

    #!/usr/bin/perl
    $chars = '1a2b3c';
    $\="\n";
    for (my $i=0;$i<length($chars);$i++){
        $chars=~s/(.)(.+)/\2\1/;
        print $chars;
    }
    

    结论类似。

    • 0
  10. An0ther0ne
    2020-11-29T15:10:55Z2020-11-29T15:10:55Z

    Python:

    s = "1a2b3c"
    for i in range(len(s)):
        s=print(s) or s[1:]+s[:1]
    

    或者在一行中:

    print([(s[i+1:len(s)]+s[0:i+1]) for i in range(len(s))])
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5