C/C++教程

LeetCode(四)

本文主要是介绍LeetCode(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. 打印一个字符穿的全部子序列:
    1. package com.model.recursion;
      
      import org.omg.PortableServer.LIFESPAN_POLICY_ID;
      
      import java.util.ArrayList;
      import java.util.List;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/29 21:52
       * 动态规划查找到一个字符串的所有子串
       */
      public class RecursionDemo01 {
      
          public static void main(String[] args) {
              String str="abc";
              ArrayList<String> resList = new ArrayList<>();
              getAllStr(str, 0, "",resList);
              for (String string:resList){
                  System.out.println(string);
              }
      
          }
          public static void getAllStr(String str,int index,String path,List<String> resList){
              if (index==str.length()){
                  resList.add(path);
                  return;
              }
              getAllStr(str, index+1, path+str.charAt(index),resList);
              getAllStr(str, index+1, path,resList);
      
          }
      }
  2. 打印出一个字符串的全排列:

    1. package com.model.recursion;
      
      import java.util.ArrayList;
      import java.util.List;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/29 22:29
       * 打印一个字符串的全排列
       */
      public class RecursionDemo02 {
          public static void main(String[] args) {
              char[] array="abc".toCharArray();
              swap(array, 0, 2);
      //        System.out.println(array);
              ArrayList<String> list = new ArrayList<>();
              arrangement(array, 0,list);
              for (String str:list){
                  System.out.println(str);
              }
          }
          public static void arrangement(char[] array, int index, List<String> resList){
              if (index==array.length){
                  resList.add(new String(array));
                  return;
              }
              for (int i = index; i <array.length; i++) {
                  swap(array, index, i);
                  arrangement(array, index+1,resList);
                  swap(array, i,index);
              }
      
          }
          public static void swap(char[] array,int left,int right){
              char l = array[left];
              char r = array[right];
              array[left]=r;
              array[right]=l;
          }
      }
    2.  

      package com.model.recursion;
      
      import java.util.ArrayList;
      import java.util.List;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/29 22:29
       * 打印一个字符串的全排列,要求无重复的
       */
      public class RecursionDemo03 {
          public static void main(String[] args) {
              char[] array="abca".toCharArray();
      //        swap(array, 0, 2);
      ////        System.out.println(array);
              ArrayList<String> list = new ArrayList<>();
              arrangement(array, 0,list);
              for (String str:list){
                  System.out.println(str);
              }
          }
          public static void arrangement(char[] array, int index, List<String> resList){
              if (index==array.length){
                  resList.add(new String(array));
                  return;
              }
      
              boolean[] arr = new boolean[26];
              for (int i = index; i <array.length; i++) {
                  if (!arr[array[i]-'a']) {
                      arr[array[i]-'a']=true;
                      swap(array, index, i);
                      arrangement(array, index + 1, resList);
                      swap(array, index, i);
                  }
              }
      
          }
          public static void swap(char[] array,int left,int right){
              char l = array[left];
              char r = array[right];
              array[left]=r;
              array[right]=l;
          }
      }

       

       

    3.    

        
这篇关于LeetCode(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!