|
1 | 1 | package com.fishercoder.solutions;
|
2 | 2 |
|
3 |
| -/** |
4 |
| - * 484. Find Permutation |
5 |
| - * |
6 |
| - * By now, you are given a secret signature consisting of character 'D' and 'I'. |
7 |
| - * 'D' represents a decreasing relationship between two numbers, 'I' represents an increasing relationship between two numbers. |
8 |
| - * And our secret signature was constructed by a special integer array, which contains uniquely all the different number from 1 to n (n is the length of the secret signature plus 1). |
9 |
| - * For example, the secret signature "DI" can be constructed by array [2,1,3] or [3,1,2], |
10 |
| - * but won't be constructed by array [3,2,4] or [2,1,3,4], which are both illegal constructing special string that can't represent the "DI" secret signature. |
11 |
| -
|
12 |
| - On the other hand, now your job is to find the lexicographically smallest permutation of [1, 2, ... n] could refer to the given secret signature in the input. |
13 |
| -
|
14 |
| - Example 1: |
15 |
| - Input: "I" |
16 |
| - Output: [1,2] |
17 |
| - Explanation: [1,2] is the only legal initial spectial string can construct secret signature "I", where the number 1 and 2 construct an increasing relationship. |
18 |
| -
|
19 |
| - Example 2: |
20 |
| - Input: "DI" |
21 |
| - Output: [2,1,3] |
22 |
| - Explanation: Both [2,1,3] and [3,1,2] can construct the secret signature "DI", |
23 |
| - but since we want to find the one with the smallest lexicographical permutation, you need to output [2,1,3] |
24 |
| -
|
25 |
| - Note: |
26 |
| - The input string will only contain the character 'D' and 'I'. |
27 |
| - The length of input string is a positive integer and will not exceed 10,000 |
28 |
| - */ |
29 | 3 | public class _484 {
|
30 | 4 | public static class Solution1 {
|
31 | 5 |
|
32 | 6 | /**
|
33 | 7 | * credit:https://discuss.leetcode.com/topic/76221/java-o-n-clean-solution-easy-to-understand
|
34 |
| - * |
| 8 | + * <p> |
35 | 9 | * For example, given IDIIDD we start with sorted sequence 1234567
|
36 | 10 | * Then for each k continuous D starting at index i we need to reverse [i, i+k] portion of the sorted sequence.
|
37 |
| - * |
| 11 | + * <p> |
38 | 12 | * e.g.
|
39 | 13 | * IDIIDD
|
40 |
| - * |
| 14 | + * <p> |
41 | 15 | * 1234567 // sorted
|
42 | 16 | * 1324765 // answer
|
43 | 17 | */
|
|
0 commit comments