zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】字符串的排列

    该题目来源于牛客网《剑指offer》专题。

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

    Go语言实现:

    func permutation(str string) []string {
       var result []string
       if str == "" {
          return result
       }
       permutationHandler([]byte(str), 0, &result)
       return result
    }
    
    func permutationHandler(strByte []byte, i int, result *[]string) {
       length := len(strByte)
       if i != length {
          //利用map排除重复字符
          strMap := make(map[string]int)
          //固定首字符,递归剩余字符;首字符依次与后面交换,继续递归剩余字符
          for j := i; j < length; j++ {
             _, ok := strMap[string(strByte[j])]
             if !ok {
                strMap[string(strByte[j])] = 1
                if j != i {
                   strByte[i], strByte[j] = strByte[j], strByte[i]
                }
                permutationHandler(strByte, i+1, result)
                if j != i {
                   strByte[i], strByte[j] = strByte[j], strByte[i]
                }
             }
          }
       } else {
          *result = append(*result, string(strByte))
       }
    }
    
  • 相关阅读:
    JAVA :: MVC
    顺序栈创建
    editplus 配置工具集
    链表之创建
    13.1.22:线性表之单链表
    Web 多线程作业
    给 Mac OS X Lion 刻一张安装光盘
    kubernetes组件之api 安装
    kubeadm 之k8s 多master 部署
    kubernetes集群之部署kubescheduler组件
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099427.html
Copyright © 2011-2022 走看看