题目
给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。
返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有:
如果 S[i] == "I",那么 A[i] < A[i+1]
如果 S[i] == "D",那么 A[i] > A[i+1]
示例1:
1 | 输出:"IDID" |
示例2:
1 | 输出:"DDI" |
示例3:
1 | 输出:"III" |
提示:
1 <= S.length <= 10000
S
只包含字符"I"
或"D"
。
解法
解法一:
双指针。begin和end指向一头一尾。每次碰到I,就把begin赋值给当前结果数组,然后自增1;遇到D就把end赋值给当前结果数据,然后自减1
JAVA
1 | public int[] diStringMatch(String S) { |