首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >交换字符串中的每一对字符?

交换字符串中的每一对字符?
EN

Stack Overflow用户
提问于 2018-05-28 09:40:32
回答 2查看 0关注 0票数 0

我想要获取字符串的交换字符对的所有排列组合。例如:

基本字符串: abcd

组合:

  1. bacd
  2. acbd
  3. abdc

编辑

我只想交换彼此相邻的字母。像第一,第二,第三,但不是第六。

什么是最好的方法来做到这一点?

编辑

只是为了好玩:有三到四种解决方案,有人可以对这些解决方案进行速度测试,以便我们比较哪种解决方案最快?

速度测试

我对nickf的代码和我的速度进行了测试,结果是我的四个字母(0.08和0.06,10K次)击败了nickf,但是nickf以10个字母(nick的0.24和0.37)

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 17:42:36

代码语言:javascript
复制
$input = "abcd";
$len = strlen($input);
$output = array();

for ($i = 0; $i < $len - 1; ++$i) {
    $output[] = substr($input, 0, $i)
              . substr($input, $i + 1, 1)
              . substr($input, $i, 1)
              . substr($input, $i + 2);
}
print_r($output);
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 18:44:57

代码语言:javascript
复制
  $arr=array(0=>'a',1=>'b',2=>'c',3=>'d');
  for($i=0;$i<count($arr)-1;$i++){
  $swapped="";
  //Make normal before swapped
  for($z=0;$z<$i;$z++){
   $swapped.=$arr[$z];
  }
  //Create swapped
  $i1=$i+1;
  $swapped.=$arr[$i1].$arr[$i];

  //Make normal after swapped.     
  for($y=$z+2;$y<count($arr);$y++){
  $swapped.=$arr[$y];

  }
$arrayswapped[$i]=$swapped;
}
var_dump($arrayswapped);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档