zoukankan      html  css  js  c++  java
  • 算法题:字符串s1,s2,判断s1的任意排列是否是s2的子串,返回true或false

     1 package com.Liuyt;
     2 import java.io.FileInputStream;
     3 import java.io.FileNotFoundException;
     4 import java.util.ArrayList;
     5 import java.util.List;
     6 import java.util.Scanner;
     7 
     8 public class Main {
     9     public static List<String> list = new ArrayList<String>();
    10     public static void permu(char[] str) {
    11         if (str == null) {
    12             return;
    13         }
    14         permu(str, 0);
    15     }
    16 
    17     private static void permu(char[] str, int begin) {
    18         if (begin == str.length) {
    19             list.add(String.valueOf(str));
    20         } else {
    21             for (int i = begin; i < str.length; i++) {
    22                 // 首次for循环时候i=begin,即a,b,c分别和自身交换
    23                 char temp = str[begin];
    24                 str[begin] = str[i];
    25                 str[i] = temp;
    26 
    27                 permu(str, begin + 1);
    28                 // 采用递归调用,每次begin+1后 带入新的递归
    29                 /* 交换一遍后再交换一次,能够保证最后的到的还是原数组,好办法! */
    30                 temp = str[begin];
    31                 str[begin] = str[i];
    32                 str[i] = temp;
    33             }
    34         }
    35     }
    36 
    37     public static void main(String[] args) throws FileNotFoundException {
    38         Scanner sc = new Scanner(System.in);
    39 
    40         String input = sc.nextLine();
    41         String s1 = input.split(" ")[0];
    42         String s2 = input.split(" ")[1];
    43 
    44         if (s2.length() < s1.length() || s2 == null){
    45             System.out.println("false");
    46             return;
    47         }else if(s1 == null && s2 == null){
    48             System.out.println("true");
    49         }
    50         char[] s1_char = s1.toCharArray();
    51         permu(s1_char);
    52 
    53         for (int i = 0 ;i < list.size();i++){
    54             System.out.println(list.get(i));
    55             if (s2.contains(list.get(i))){
    56                 System.out.println("true");
    57                 return;
    58             }
    59         }
    60         System.out.println("false");
    61     }
    62 }

    示例1:

    ab dshfsjbaooo

    true

    示例2:

    ab dsjklacbsoo

    false

  • 相关阅读:
    PHP获取一周的日期
    关系型数据库和非关系型数据库的区别和特点
    关系型数据库和非关系型数据库的特性以及各自的优缺点
    什么是数据库?什么是关系数据库?什么是非关系型数据库?
    PHP中把对象转数组的几个方法
    验证银行卡号
    xss过滤方法
    PHP 随机字符
    计算两个日期相差年月日
    判断一个时间段是否包含周末
  • 原文地址:https://www.cnblogs.com/Liuyt-61/p/14635319.html
Copyright © 2011-2022 走看看