leetcode- DI字符串匹配

942. DI String Match

Given a string S that only contains “I” (increase) or “D” (decrease), let N = S.length.
Return any permutation A of [0, 1, …, N] such that for all i = 0, …, N-1:

  • If S[i] == “I”, then A[i] < A[i+1]
  • If S[i] == “D”, then A[i] > A[i+1]

My code

class Solution {
    public int[] diStringMatch(String S) {
        int f=0,e=S.length();
        int[] A = new int[e+1];
        int i;
        for(i=0;i<S.length();i++){
            A[i]= S.charAt(i)=='I'?f++:e--;
        }
        A[i]= S.charAt(i-1)=='I'?f:e;
        return A;
    }
}

思路

题目让我们根据字符串内容返回一个数组,根据所给例子,我们得知数组大小比字符串长度多1,而且数组元素最大的数字为字符串长度大小,最小为0;可以看出规律:当前 “I” 的数字比下一个 “I” 的数字小1,而“D” 则是相反。
循环完之后,数组还剩1空位没有元素,因此还需要再判断字符串最后一个元素来决定数组最后一个数字是什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值