zoukankan      html  css  js  c++  java
  • Weekly Contest 111-------->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]

    Example 1:

    Input: "IDID"
    Output: [0,4,1,3,2]
    

    Example 2:

    Input: "III"
    Output: [0,1,2,3]
    

    Example 3:

    Input: "DDI"
    Output: [3,2,0,1]

    Note:

    1. 1 <= S.length <= 10000
    2. S only contains characters "I" or "D".

    Approach #1:

    class Solution {
    public:
        vector<int> diStringMatch(string S) {
            int len = S.length();
            vector<int> ans(len+1, 0);
            int index = 0;
            for (int i = 0; i < len; ++i)
                if (S[i] == 'I') ans[i] = index++;
            ans[len] = index++;
            for (int i = len-1; i >= 0; --i)
                if (S[i] == 'D') ans[i] = index++;
            return ans;     
        }
    };
    

      

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    主机连接不上虚拟机或虚拟机桥接没有网络
    asp web 报表
    heart or house?
    CPointer
    Raid
    Dos for by 随风
    不支持uri格式
    FabEdge V0.4 新特性:支持多集群通讯
    运维监控
    /etc缩写
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9979362.html
Copyright © 2011-2022 走看看