给定只含 “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]

class Solution {
public int[] diStringMatch(String S) {
int[] A=new int[S.length()+1];
int a=0;
int b=S.length();
for(int i=0;i<S.length();i++){
if(S.charAt(i)=='I'){
A[i]=a++;
if(i==S.length()-1){
A[i+1]=a++;
}
}
else{
A[i]=b--;
if(i==S.length()-1){
A[i+1]=b--;
}
}
}
return A;
}
}
本文介绍了一种基于字符串S(仅包含'I'和'D'字符)的算法实现,该算法能够生成一个整数序列A,长度为S的长度加一。序列A的特点在于其元素的增减变化严格遵循S中字符指示的方向,即当S[i]为'I'时A[i]小于A[i+1],反之则A[i]大于A[i+1]。通过巧妙地利用两个指针a和b来动态调整序列A中的数值,确保了生成序列的有效性和正确性。
861

被折叠的 条评论
为什么被折叠?



