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))
       }
    }
    
  • 相关阅读:
    day03接口的初期认识
    day03模板方法设计模式
    day02抽象类的练习
    day02抽象类1
    final 关键字
    day01子类与父类特点
    day01继承extends
    day01函数的重载
    图解HTTPS
    编译的时候遇到 The type java.lang.Object cannot be resolved.
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099427.html
Copyright © 2011-2022 走看看